前言
emmmm,很久没有好好的打比赛了,基本都是滑水,认真打的时候又被一些脑洞卡一天,难受,这次的题比较简单,所以Writeup也就简单些写了,可惜不会逆向,不然应该有那么点可能AK吧。
SimpleBBS
一个普通的BBS,进去随手在登入框输了个‘ ‘ ’就报错了,直接把SQL语句都爆出来了
甩sqlmap爆破,爆破的时候把level设置高一些,很多问我怎么他们没爆出来,应该就是因为level的原因吧。flag放在bbs库flag表flag字段里。
SimpleBlog
这道题目很明显是二次注入,由于很讨厌写注入的题,所以也是很后面才写,主要逻辑在于注册用户时我们插入SQL查询语句,登入后也在主页面提示分数为0什么的信息,所以在Final Exam页面测试,如果返回值显示的分数为非0,那么则表示注入的查询语句查询正确,若返回显示的分数为0,则说明查询失败,所以典型的盲注了,构造payload:’ or if((ascii(substr((select flag from flag),1,1))=1),1,0)=’1’ or ‘ 作为注册用户名,这里坑了一下,刚开始用的是 and,在insert的时候 and 和 && 不会当作逻辑运算符执行,所以用 or 或者 || ,写个盲注脚本就好了。
1 | import string |
SimpleExtensionExplorerInjection
题目写得很清楚这题是XXE的点,所以先抓一个http request包
application/json应该都很熟悉了,把json改成xml进行XXE注入,参考文章:https://landgrey.me/XMLBeam-XXE-Simple-Analysis/,发现构造:
1 | <root> |
时有一样的回显,那么就是CVE-2018-1259的洞了,构造payload:
1 |
|
SimplePrintEventLogger
这道题算非预期了,出题人木有把两个题目分开,所以导致捡漏了,看题目描述是同一个组件造成的RCE,那解法应该是参考:https://trex-tbag.github.io/2018/04/14/spring-data-common-cve/(没有去复现尝试)。
由于和上一题共用同一个环境,flag都放在根目录下,那也就是文件名的问题,但是XXE是可以列目录的,构造payload:
1 |
|
可以直接列出更目录,很清楚的,RCE这题的flag就摆在这了,捡漏捡漏。
SimpleServerInjection
题目提示为SSI,刚开始看成了SSTI,一直在怒怼PHP的模版注入,坑了我好一段时间……既然是SSI,那就可以利用include来尝试包含本地文件
我们利用include virtual,构造payload:
1 | name=<!--%23include virtual="flag" --> |
就可以得到flag,这里主要在于#号需要urlencode一下。
SimpleWasmReverse
这题最后卡wasm逆向上了,蛮写写思路
把flag.js下载到本地分析,可以看到调用了一个flag.wasm文件
)可以下载到flag.wasm进行分析,找到了一篇类似题目的writeup:https://tipi-hack.github.io/2018/04/01/quals-NDH-18-assemblyme.html,参照题目进行js调试判断调用函数,在check()函数上下断点跟进,可以看到调用了wasm中的$func53函数
所以接下来要做的主要就是反编译wasm文件,找到$func53函数进行分析,奈何wasm反编译后是3M的C源码。。。。。。而且变量名都变了,作为一个逆向只好爆破什么的来说,到这就放弃了,思路肯定是没毛病的了,分析调用的函数就可以的到flag{xxxxxx},页面提交就可以得到flag的吧,坐等Writeup
题目相对比较简单,差一题ak比较可惜,不过也不会逆向,木有办法,仅供学习。