N0rth3ty's Blog.

护网杯Web WP

字数统计: 511阅读时长: 2 min
2018/10/15 Share

Web3看出来是个fastjson反序列化Rce了,可是太菜了不会做
不要眼高手低了,多动手,多写代码,多复现

easy tornado

进来先看到hint
md5(cookie_secret + md5(filename))
开始我想的话可能是一个hash长度扩展,其实这里不可能扩展的
因为filname是经过了md5的
所以我们只能想办法拿到cookie_serect
另一个txt里提到了render()
可以推测这里可能有一个模板注入
我们这里是要获取cookie_serect
这里需要去读tornado的源码,所以基本功还是很重要的
https://github.com/tornadoweb/tornado/blob/master/tornado/auth.py
(虽然读文档也是可以的
通常一个Tornado web应用包括一个或者多个RequestHandler子类
这里过滤了很多符号,所以直接用handler.settings来读取settings就可以获取到cookie_serect了
payload

1
/error?msg={{handler.settings}}

这是返回信息,可以看到有cookie_serect了

1
{'login_url': '/login', 'template_path': 'templates', 'xsrf_cookies': True, 'cookie_secret': 'OV)aHdn.+xb>4wcKZsRk7fou-3t2FCD_5~QmW]#09[rY6UezGJjy8S*Tp%<$q1(h', 'debug': False, 'file_path': '/www/static/files', 'static_path': 'static'}

所以直接构造签名去读取flag.txt中的
payload

1
/file?filename=/fllllllllllag&signature=29d7f2bc1678df783702dd9dad40019d

ltshop

多线程发包可以竞争到10多个大辣条,但是要兑换99999999个辣条之王是不可能的
然后这里多线程发包是不需要使用Python的,直接用burp的爆破模块就OK了
想了下怎么竞争都是不可能的,太多了。。
所以这里只能是个溢出
go语言写的,大整数临界值是0xFFFFFFFFFFFFFFFF,这里5个兑换一个,所以number的实际临界为0xFFFFFFFFFFFFFFFF//5
3689348814741910323
实际payload为
image
然后兑换flag即可

1
2
3
4
5
6
7
8
uint8  : 0 to 255
uint16 : 0 to 65535
uint32 : 0 to 4294967295
uint64 : 0 to 18446744073709551615
int8 : -128 to 127
int16 : -32768 to 32767
int32 : -2147483648 to 2147483647
int64 : -9223372036854775808 to 9223372036854775807

最近中科大的hackgame也有一个类似的题目,同样是通过购买足够长的时间来达到时间溢出
然后可以获取足够多的利息的同时绕过了取钱的验证
image

CATALOG
  1. 1. easy tornado
  2. 2. ltshop