一、easytornado
题目:
解题基础
服务端模板注入攻击 (SSTI) 之浅析
python SSTI tornado render模板注入
SSTI模板注入
解题方法:
1、从上图可以看出,那个hash值,只要按hint.txt要求方法构造出来,就可以访问到内容;
2、首先尝试一下将file改成/fllllllllllllag,得到如下界面
3、welcom.txt中提示存在模版注入,那么可能可以执行部分语句:
4、输入如下url,可得到
http://111.198.29.45:30487/error?msg={{handler.settings}}
这样就拿到了cookie_secret
5、在md5的加密网站先进行/fllllllllllllag
按照md5(cookie_secret+md5(filename))格式进行加密:
6、访问对应的url
7、得到flag
二、ics-06
题目:
解题方法:
1、看到URL中的”index.php?id=1”,就开始尝试注入,但是除了数字其他的都不能用,输入其他类型的字符,会被重定向回id=1;这时用burpsuite抓包爆破一下
2、id到2333的出现不一样的内容
三、lottery
题目:
一个比较好玩的题目,里面注册完可以买彩票,猜对之后有奖金,可以买flag,这样思路可能就是要挣钱买flag了
解题方法:
1、查看robots.txt,发现有git目录,有Git源码泄漏
2、用这个工具可以找到源码,GitHack(下载地址)
3、先抓取一下点击buy按钮的网页包
4、 $numbers 来自用户json输入 {“action”:”buy”,”numbers”:”1234567”},没有检查数据类型。 $win_numbers 是随机生成的数字字符串。
5、使用 PHP 弱类型松散比较,以”1”为例,和TRUE,1,”1”相等。 由于 json 支持布尔型数据,因此可以抓包改包,构造数据
已经有这么多钱了hhh
再来几次就够了
6、买到flag了
四、mfw
题目:
解题方法:
1、根据上图可以看出有个flag的文件在目录下,但是无法读取,被执行了,然后可能有git源码泄漏
用上面那个题目的工具进行渗透
成功拿到源码,但是flag.php里面啥也没有
2、只有index.php可以利用,所以在index.php里找bug
由两个关键地方,file直接拼接,不做任何检查,可以根据第二个红框地方进行恶意payload构造;
assert() 检查一个断言是否为 FALSE
strpos() 函数查找字符串在另一字符串中第一次出现的位置。
file_exists() 函数检查文件或目录是否存在
利用上面的信息构造payload:
page=123') or system("cat templates/flag.php");//
因为strpos函数里只有template/123,所以会返回false,之后or执行system命令,//表示注释
file_exists函数执行同理
about.php', '123') === false and system('cat templates/flag.php') and strpos('templates/flag
and前面的一定会返回true,之后执行命令,file存在那儿会失败
上述两种办法来自博客:
博客1
博客2
还有很多payload构造方法,可以自己尝试一下
3、奉上flagcyberpeace{56445c400d4b2305d1339a5266a152ba}
五、shrine
题目:
解题方法:
1、分析代码
2、判断是否存在模版注入,url输入/shrine/14
3、如果没有过滤可以直接即可查看所有app.config内容,但是这题设了黑名单[‘config’,‘self’]并且过滤了括号。
python还有一些内置函数,比如url_for和get_flashed_messages
4、输入/shrine/{{url_for.__globals__}}
查看
看到current_app意思应该是当前app,那我们就当前app下的config:
5、输入/shrine/{{url_for.__globals__['current_app'].config}}
查看flag
6、输入/shrine/{{get_flashed_messages.__globals__['current_app'].config}}
查看