今天好好学习了吗
写在前面:做题的时候总是需要些提示才做的出来,反省一下感觉是因为整个知识框架很乱,指哪打哪。所以还是打算用博客整理,一方面用这样的仪式感督促自己,另一方面方便后期搜索整理。开始吧!
1.SSTI注入
【护网杯2018】-攻防世界web-高手进阶区-easytornado
-
思路
-
url形如
http://159.138.137.79:55925/file?filename=/welcome.txt&filehash=bfa0e94f85fe24936b59f8e75a2c8bb8
,既然说了flag
在/fllllllllllllag
,那前半部分就有了。 -
filehash计算方法:
md5(cookie_secret+md5(filename))
,问题就是要拿到cookie_secret
。 -
tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。
-
-
GOGOGO
-
尝试直接输入/fllllllllllllag返回error,修改error的msg值为
{{2}}
,返回2,修改msg值为{{2*3}}
,返回orz,说明操作符被过滤。 -
现在要拿到tornado中的cookie,用的就是
handler.settings
对象,handler 指向RequestHandler
,而RequestHandler.settings
又指向self.application.settings
,所有handler.settings
就指向RequestHandler.application.settings
了。传递error?msg={{handler.settings}}
,得到cookie_secret
为84cfe5dc-0065-4cf6-83a7-e574a2210e8c
。 -
/fllllllllllllag
的MD5值:3bf9f6cf685a6dd8defadabfb41a03a1
(取32位!!) https://md5jiami.51240.com/
-
-
坑
- url中的filename是
/fllllllllllllag
不是/fllllllllllllag.txt
- url中的filename是
2.php弱类型比较
【XCTF 4th-QCTF-2018】-攻防世界web-高手进阶区-lottery
-
思路
- 感觉这题有点问题啊,直接把源码给出来了。
- 重点就是一个php中==是弱类型比较,if(true == 任何非零的数字) 会返回 true。 构造
payload = [true,true,true,true,true,true,true]
即可中彩票!
-
坑
- 刚开始想的是源码中产生随机数的函数
openssl_random_pseudo_bytes
有没有可能预测,被自己幼稚的想法逗笑了kk - 如果不给源码的话,御剑扫描目录,可以发现robots.txt【存放于网站根目录下的ASCII编码的文本文件】。提供线索
/.git/
,进入.git/
目录,用神器 GitHack 下载文件。
- 刚开始想的是源码中产生随机数的函数