君は春の中にいる、かけがえのない春の中にいる.

你驻足于春色中,于那独一无二的春色之中.

DDCTF2018 部分writeup

难得抽出时间肝了两天,应该算是参加CTF以来做出题最多的一次了
_(:з」∠)_

0x01 (╯°□°)╯︵ ┻━┻

进制转换,先将16进制转换为10进制,再对128求余,剩下的结果转换为字符。

0x02 第四扩展FS

迷之一题

使用binwalk提取图片压缩包,发现加密,同时里面有一个ext2文件,利用Win下的ext读取工具加载后发现内容为空。

多次操作无果后,重新打开图片发现一段特殊代码:

直觉下用Pactera去解压,竟然解压成功了。

接下来的文本根据提示进行字符频度统计即可得到flag。

0x03 流量分析

利用wireshark发现FTP有两个zip文件,一堆邮件,zip文件加密且格式有问题,所以无解,查询邮件发现有一张图片应该是密钥。

进行图片识别,这里很容易将l和1,0和o识别错误,所以需要手动进行更正,再将正确的密钥导入wireshark,跟踪SSL流即可得到flag。

0x04 安全通信

ECB模式的分组加密可以通过改变分组位置进行攻击,这里nc上去之后可以通过输入Agent ID来操纵flag的分组位置,因此可以进行逐位爆破,

0x05 数据库的秘密

第一步进行X-Forworded-For欺骗

第二步利用Burp代理始终显示隐藏表单

第三步这里是一个时间盲注,利用sleep(ascii(a-b)),把一个时间盲注转化为布尔盲注,进行注入。

详细payload如下:

1
test'and (sleep((ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA LIMIT 0,1),1,1))-100)));#

最终在flag9表中中获取到flag

0x06 专属链接

进入页面后发现有一个base64编码的任意文件读取,可以读取xml、class、ks等格式的文件,先读取配置文件web.xml和applicationContext.xml。

发现有一个监听器的class,下载回来后进行反编译,是一段用于加密的代码,大致逻辑是利用sdl.ks中的公钥对flag进行加密,那么我们现在就需要找到密文,发现密文是一起放进flago里然后入库的。

在主页面发现另一个连接

1
<!--/flag/testflag/yourflag-->

任意访问后报错发现,还有一个文件

1
com.didichuxing.ctf.controller.user.FlagController.submitFlag

在源码中调用接口,需要将邮箱加密后hex转码访问接口,获取到data的密文。

再将密文解密即可得到flag。

0x07 注入的奥妙

发现hint是big5,按照传统的宽字节注入无果,遂用携带%5c的big5字符去Fuzz尝试,发现如下payload可以成功。

1
http://116.85.48.105:5033/ab393ca3-0736-4ac3-8fb5-5461d803ea87/well/getmessage/1尐'*

构造好后就可以用sqlmap跑。

发现新的路径,最后一个可以获取到源码,然后利用第3个进行反序列化。

构造序列化字符,这里需要注意的问题是命名空间对序列化结果的影响,在这里卡了很久。

最后的payload如下:

1
2
3
a=O%3A17%3A%22Index%5CHelper%5CTest%22%3A2%3A%7Bs%3A9%3A%22user_uuid%22%3Bs%3A36%3A%22ab393ca3-0736-4ac3-8fb5-5461d803ea87%22%3Bs%3A2%3A%22fl%22%3BO%3A17%3A%22Index%5CHelper%5CFlag%22%3A1%3A%7Bs%3A3%3A%22sql%22%3BO%3A16%3A%22Index%5CHelper%5CSQL%22%3A2%3A%7Bs%3A3%3A%22dbc%22%3BN%3Bs%3A3%3A%22pdo%22%3BN%3B%7D%7D%7D

DDCTF{2b305718ff69f1807d36d4a2d56007c5c12d20bab289a96d3c16725c5d56026c}