背景知识
命令执行漏洞
Django框架
题目
先ping一下,输入127.0.0.1
这个输入可能存在命令执行的操作,但是经过尝试之后并不能正常执行
127.0.0.1&&dir、127.0.0.1&&ls、127.0.0.1|ls均被屏蔽,但经过尝试可知,网站使用的是url编码能够传入。
传递%80会出现报错,url编码使用的是16进制,80也就是128,ASCII码是从0-127,所以这个时候会报错。
报错后出现一大长串的代码,只能代码审计
拉到后面可以发现
发现是Django框架,所以根据Django的目录,我们使用@进行文件传递,对文件进行读取之后还会把内容传给url参数,如果像上面一样有超出解析范围的编码的时候就会得到错误信息。
可以从配置文件settings.py的报错中看看有没有database的相关信息?url=@/opt/api/api/settings.py
使用ctrl+f查找database、settings等
根据前面发现的数据库路径,构造payload
?url=@/opt/api/database.sqlite3
得到flag:
WHCTF{yoooo_Such_A_G00D_@}
参考学习链接:
【愚公系列】2023年05月 攻防世界-Web(Cat)_攻防世界cat_愚公搬代码的博客-CSDN博客
攻防世界-Cat_攻防世界cat_仲瑿的博客-CSDN博客