攻防世界-CAT
首先看到的是一个输入域名(怀疑命令注入)的地方
然后输入经典127.0.0.1
试试
果然是ping命令的,但是&
&&
|
;
都不行
模糊测试
发现没有其他都过滤了,但是这几个没有过滤
@-./
然后试试sql的字典FUZZ一下
宽字节看起来跟其他的不同,将response的代码复制到本地打开看看
得到一个报错网页
解题
RTFM of PHP CURL===>>read the fuck manul of PHP CURL???
官方提示,然后找到对应的语法,结合之前没有过滤@
,我们就可以读取任意文件
从网上找到的wp中说Django中的项目位置下面有一个settings.py
文件,打开看看(项目位置可以上从面的报错网页找到)
同时,打开database文件看看,第一个报错页面里面也有路径/opt/api/database.sqlite3
找到flag
小结
- 宽字节注入
- curl的@+文件名做本地文件读取
- Django框架文档说明的读取