pikachu靶场通关

pikachu靶场通关

暴力破解

1.基于表单的暴力破解

image-20220131122217344

burp跑一下

2.验证码绕过(on server)

image-20220131122833233

修改密码发了两次包都发现没有提示验证码错误,那我们可以重复利用这个验证码。

image-20220131123001877

跑出来了

3.验证码绕过(on client)

根据题目提示是前端验证码

image-20220131123458283

那我们发包同样可以绕过

image-20220131123626609

成功

4.token防爆破?

image-20220131124113085

通过观察我们可以发现下一次的token是由这一次的返回包来决定的,

image-20220201102136091

选这个

image-20220201102210221

线程设置为1

image-20220201102317701

设置一下获取的token

image-20220201102409707

选择总是

image-20220201103151781

选择递归搜索,把上一个token填进去

image-20220201110843373

发现密码

xss跨站脚本漏洞

1.反射型xss(get)

因为在输入框有输入限制,我们就直接在url中添加参数

image-20220201112154043

image-20220201112158872

2.反射性xss(post)

先用123456的账号密码登录上去

image-20220201113436342

然后就可以了

image-20220201114104514

当然我们也有很多的绕过方式

<sCRIPT>alert('1')</script>

<sCRIPT>alert(/xss/)</script>//代替""

都可以

3.存储型xss

还是用上面的payload<sCRIPT>alert(/xss/)</script>

image-20220201114843672

4.DOM型xss

image-20220201115819085

通过审查元素我们可以发现我们在点击按钮之后,这个标签里面的属性就会改变我们要做的就是把它弄成超链接,

onclick 事件会在对象被点击时发生,然后弹出我们的xss,记得闭合我们的标签符号

'onclick="alert(123)">

image-20220201120149233

5.DOM型xss

image-20220201121609094

可以看到上面的标签在点击下面的标签之后内容就会变成输入框里面的内容,我们还是用onclick事件。

'onclick="alert(123)">

6.xss盲打

image-20220201130503164

先把payload注入进去

image-20220201130521691

登录进去看看

image-20220201130606293

存在漏洞

7.xss之过滤

看题目就知道有过滤,我们直接使用上面提到的绕过的payload

拼凑:<scri<script>pt>alert(/xss/)</scr</script>pt>

<sCRIPT>alert(/xss/)</scriPt>

image-20220201130839329

8.xss之htmlspecialchars

image-20220201131532369

由于输入的地方出现了特殊字符,所以被记录下来了,但是发现记录的标签也可以进行注入,那我们继续使用onclick事件

'onclick='alert(/xss/)'

image-20220201131717082

9.xss之href输出

image-20220201131817651

用oncilck事件没有成功

我们还是按常理输出,然后点击查看查看元素发现,这次的输出是在href中,但是这次代码将双引号进行了过滤,是不是这样不能执行xss代码了呢,当然不是,输出在a标签里的href属性,可以使用js协议来执行js

javascript:alert(/xss/)

image-20220201132454361

10.xss之js输出

image-20220201132657030

可以看到直接被拼接进了代码中,那我们直接对他进行闭合

'</script><script>alert(/xss/)</script>

image-20220201132823975

CSRF(跨站请求伪造)

Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为”one click”攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。

1.CSRF(get)

image-20220201154952242

发现请求是这样的,我们可以伪造这样的请求,登录lili的账号之后让lili点这个链接,然后就会发现lili的个人信息被修改了

image-20220201155130031

2.CSRF(post)

第二关post也一样,我们伪造一个就好了。

image-20220201155542980

他的信息是在post里面的,那我们伪造一个包。

但是我不知道怎么发出去,看了下答案,需要伪造一个站点,别人点你站点中的按钮的时候,就可以自动向那个网站发一个修改个人信息的请求。

<html>
 
<head>
 
<script>
 
window.onload = function() {
 
document.getElementById("postsubmit").click();
 
}
 
</script>
 
</head>
 
<body>
 
<form method="post" action="http://www.tests.com/vul/csrf/csrfpost/csrf_post_edit.php">
 
<input id="sex" type="text" name="sex" value="body" />
 
<input id="phonenum" type="text" name="phonenum" value="123456789" />
 
<input id="add" type="text" name="add" value="usa" />
 
<input id="email" type="text" name="email" value="vince@pikachu.com" />
 
<input id="postsubmit" type="submit" name="submit" value="submit" />
 
</form>
 
</body>
 
</html>

token

如果有token的话看网上说的就无法绕过了。

sql注入

又到了我最喜欢的sql注入时间

1.数字型注入

直接在hackbar里面用or 1=1

image-20220201160657534

成功

2.字符型注入

kobe' or "1" = "1"#

image-20220201161344643

成功

3.搜索型注入

kobe' or "1" = "1"#

image-20220201161811993

4.xx型注入

image-20220201161919392

上面的payload被过滤了,但是依然报错,开始尝试绕过。

')or 1=1 #

成功绕过image-20220201163008834

5.insert/update

首先了解下updatexml()函数

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc

第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。

第三个参数:new_value,String格式,替换查找到的符合条件的数据

作用:改变文档中符合条件的节点的值

改变XML_document中符合XPATH_string的值

而我们的注入语句为:updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)

其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出。

xxx' or updatexml(1,concat(0x7e,database()),0) or '

image-20220201171910421

6.delete注入

打开burpsuite然后点击删除,抓到包后发送到重发器然后在56后面加上我们的语句

+or+updatexml(1,comcat(0x7e,database()),0)因为这里传的是数值型,我们就不用单引号闭合,直接or就行了,这样就完成了我们的注入

image-20220201172931918

img

7.http头注入

我们的信息被记录了,那有可能是记录在数据库了

image-20220201174404449

可能又是insert

image-20220201175400728

在user-agent完整注入

8.基于boolian的盲注

kobe’ and ascii(substr(database(),1,1))=112#

image-20220201180541316

9.时间盲注

时间盲注主要使用if语句,通过延迟信息进行判断,不看回显信息

image-20220201181336356

右击审查元素

image-20220201181340785

然后点击网络,再从上面提交上去,可以看到时间执行了5.12秒,说明有盲注

image-20220201181344988

kobe’ and if ((substr(database(),1,1))=’a’,sleep=(5),null)#

构造了另一条代码

此时1ms就返回结果,说明数据库名第一位不是a
将a改为p,则一直不返回结果
说明数据库名第一位不是a

RCE

RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

1.ping

命令执行

经常遇到,但是由于我们是windows系统,我们要用whoami命令

image-20220201182310878

最下面可以看到结果

2.exec “eval”

image-20220201182644246

eval把字符串当做代码来执行。

文件包含

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。

1.本地包含

先在本地建立一个敏感文件

image-20220201183902587

file传参的时候包含这个文件

image-20220201183916344

2.远程包含

http://192.168.32.104/pikachu/vul/fileinclude/fi_remote.php?filename=http://192.168.32.104/pikachu\vul\fileinclude/test.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

image-20220201184427302

不安全的文件下载

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。

image-20220201185131158

下载抓包发现文件,我们把我们的敏感文件下载下来

image-20220201185216830

image-20220201185219777

文件上传漏洞

这个也简单

1.客户端check

看标题就知道是js嘛

先用jpg上传,然后在burp包里修改文件的后缀名,就可以绕过前端检测

image-20220201194924964

image-20220201195341874

获得shell

2.服务端check,MIME

可以用一句话木马图片绕过,当然也可以直接修改mime

image-20220201195459029

上传成功

3.getimagesize()

getimagesize()简介
这个函数功能会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的

直接上传一个图片,然后在里面注入我们的恶意代码

然后用之前的包含漏洞包含我们的图片就可以了

越权

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

1.水平越权

image-20220201204858787

得知这些账号

image-20220201212328598

把lucy的包伪造成lili的

image-20220201212413880

成功水平越权

2.垂直越权

image-20220201212454749

我们的目标就是用pikachu使用root的功能

先登录admin获取一个创建用户的包

image-20220201213354562

然后需要把我们普通用户的cookie替换上去,这样在登录普通用户的情况下就可以实现垂直越权

image-20220201213501343

可以看到用户被添加进去了

目录遍历漏洞

image-20220201214157517

目录遍历,可以读取目录中的任意文件。

敏感信息泄露

image-20220201215102010

源代码中有测试账号可以看到。

直接就登录进去了,我还用dirsearch扫了半天。。

反序列化

(๑╹◡╹)ノ”ez啦~

image-20220201220501911

image-20220201220448090

我们先来一个正常的试一下。

image-20220201220533182

报错了。

好的不会了,序列化一生之敌!!!!!!!!!!!

(38条消息) pikachu靶场 :十二、PHP反序列化_CNwanku的博客-CSDN博客_pikachu 反序列化

xxe

XXE -“xml external entity injection”
既”xml外部实体注入漏洞”。
概括一下就是”攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题”
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

            具体的关于xml实体的介绍,网络上有很多,自己动手先查一下。                
            现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。
            以PHP为例,在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。
            
            本章提供的案例中,为了模拟漏洞,通过手动指定LIBXML_NOENT选项开启了xml外部实体解析。             

xxe我也不是很会,过几天学一学

<?xml version = "1.0"?> <!DOCTYPE note [ <!ENTITY hacker "xxe"> ]> <name>&hacker;</name>

这个是payload

image-20220201223315820

url重定向

image-20220201223138435

image-20220201223147548

感觉和远程文件包含差不多

ssrf

curl

image-20220201223415905

发现后面跟了个url参数

image-20220201223448116

伪造一个url

image-20220201223500719

file_get_content

image-20220201223540152

又有参数image-20220201223600441

搜了下正确的用法是用伪协议读取文件

192.168.32.104/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=http://127.0.0.1/phpinfo.php

image-20220201223723101

base读取成功


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。