2018护网杯Writeup

一、MISC

迟来的签到题

提示: easy xor???
给了个字符串
AAoHAR1UIFBSJFFQU1AjUVEjVidWUVJVJVZUIyUnI18jVFNXVRs=
此脚本适用于Python3.x
有的朋友肯定会问为啥不直接把base64decode的字符串送入,而把base64decode的结果拎出来存到变量s里面
其实是因为直接送入的话会报错,错误提示是这样的: TypeError: ord() expected string of length 1, but int found
最后发现base64decode输出的是b’\x00\n\x07\x01\x1d#\’P%UQ$SPTT %”QSQU”PTSTU^SQWP%T\’\x1b’
这里把b删去就行了,特别说明一点,如果你使用Python2.x的话就不会报错

二、Web

easy tornado

给了三个文件,分别是Orz.txt、hint.txt和flag.txt
分别点进去看了看
url的形式都是http://*.*.*.*:****/file?filename=文件名&signature=签名
文件名
文件内容
Orz.txt
render()
hint.txt
md5(cookie_secret + md5(filename))
flag.txt
/fllllllllllag
到这里思路其实很清楚了,就是需要文件名和对应签名一样就可以读文件
我们要读的目标文件是/fllllllllllag,而hint.txt给出了生成签名的方法
但是现在cookie_secret是未知的
除此之外,我还发现当文件读取失败的时候出现:http://*.*.*.*:****/error?msg=xxxx
在orz.txt中提示了render(),结合题目我去搜索了一遍,发现render()用来引入变量用的
简单来说通过self.render(“user.html”,username=user_name)传入变量,然后html中通过{{ username}}引入变量
可以看下这个链接https://www.kancloud.cn/kancloud/python-basic/41712
然后试了一下{{cookie_secret}},结果毛都没有……
后来看表哥们的writeup,这个cookie_secret是放在handler.settings里面的
一叶飘零表哥比较厉害,他事直接从源码看的 https://github.com/tornadoweb/tornado/blob/master/tornado/auth.py
然后返回了
{‘login_url’: ‘/login’, ‘template_path’: ‘templates’, ‘xsrf_cookies’: True, ‘cookie_secret’: ‘0tG+hY[4ekR($v72OzJa)M9d!jV8sF.n1>{Zo#*pPIm_<W%L3-T~AuQlBbqr6}ig’, ‘debug’: False, ‘file_path’: ‘/www/static/files’, ‘static_path’: ‘static’}
然后构造签名,拿到flag
 

ltshop

一是一道欢快的麦辣条的题
随便注册个账户,发现给了20个币
分为三种辣条:
¥5一包辣条
5包辣条换一包辣条王
9999999包辣条王换flag
然后这事就很迷了,我们初始的钱都不够换个辣条王的,抓个包发现拿币买辣条这个数据包连个参数都没有。
板上钉钉就是条件竞争了,然后竞争了一下,发现有8个辣条,能换个辣条王了。
然后换辣条王的时候的数据包有参数了,肯定溢出。
下面是golang内定义的数据类型的范围
数据类型
范围
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
接下来来计算最多能买多少个大辣条
因为猜测使用了uint64用来定义辣条的数量
所以大辣条最大的数目就是18446744073709551615/5=3.6893488147419105e+18
所以要溢出的话,这个数目+1就行了
溢出后,就能买flag了

easy web

并没有看着道题,不过看大佬的writeup说是fastjson反序列化,回头单开一篇文章浮现一下。

easy_laravel

并没有看这道题,看大佬的writeup还挺有趣的,可惜没有环境复现了
总结:感觉题的质量很高啊,从中确实感觉到了ctf的乐趣,挺好玩。但是可惜的是环境关的比较快,我比较墨迹,想着今天下午复现一些,结果没环境了尴尬。同时给我印象比较深的是那个pwn题吧,大家都说挺简单的。但是我一看是pwn就没有去看emmm,回头单开一贴用这题入门pwn吧。今天先写到这,下面是这次比赛的一些writeup可以参考。
可以参考的writeup:
https://www.anquanke.com/post/id/161849#h2-3
https://qingchenldl.github.io/2018/10/13/%E6%8A%A4%E7%BD%91%E6%9D%AFWP-BitPwn/
https://xz.aliyun.com/t/2897?from=timeline&isappinstalled=0#toc-12
https://github.com/mstxq17/ctf_web/blob/master/%E6%8A%A4%E7%BD%91%E6%9D%AFweb%E8%A7%A3%E9%A2%98%E8%AE%B0%E5%BD%95.md
http://m4x.fun/post/hwb2018-pwn-writeup/