0.前言
慢人一步的WP,
被迫去做各种类型的题,
以及除了PWN其他都学到了……
(第一次写其他类型的wp)
1.CRYPTO
1-1.Dancing Line
拿到的附件如下图:
用PS打开,放大,可以看到从左上到右下,线的路径都是向右或向下。
联系到二进制,即向右为0,向下为1,以黑色像素点为结点,对应ASCII码即可解出flag。
1-2.EasyRSA
给的task.py如下图:
可以看出密文c,指数e,质数p,q都给出了,那么只要写一个解密脚本就行了。
1 | from primefac import * |
运行即可获取flag:
1-3.Matryoshka
套娃密码,但是我没做出来(
看官方的wp罢。
1-4.English Novel
选择明文攻击类题,加密方法是类似于凯撒密码,不过每一位的key都是随机产生的。遇到非字母字符则不变。
但是这样也就产生了一个问题,即虽然每一位的key都是随机产生的,但是对于不同的明文即密文,对应的第i位的key都是一样的。
手动查找后发现明文part0对应的是密文的part175:
解密脚本如下:
1 | enc="klsyf{W0_j0v_ca0z_'Ks0ao-bln1qstxp_juqfqy'?}" |
运行结果如下:
因为有非字母字符,所以这个产生的并不是最终的flag,需要手动更改(比较稳妥的做法是再找一组),
最终的flag为:hgame{D0_y0u_kn0w_’Kn0wn-pla1ntext_attack’?}
2.IoT
2-1.饭卡的uno
这题纯粹就是送的,拿到附件后扔进IDA就能找到flag:
3.MISC
3-1.欢迎欢迎!热烈欢迎!
签到题,没什么好说的。
3-2.这个压缩包有点麻烦
套娃压缩包,几乎考了zip解密的各种方法(过程没截图)。
首先提示是密码不能少于六位,很危险,所以推测是爆破六位数密码,用kali的fcrackzip即可。
之后是获得了另一个压缩包和其他附件,提示是把所有的密码给出来了,因此考虑字典爆破。
再之后又是另一个压缩包和提示,以及一个0字节的readme.txt,考虑到提示以及这个readme.txt和加密压缩包里面的CRC32是一样的,因此解法就是明文攻击。(只要爆破出密钥就行了)
再然后是拿到一张flag.jpg,拿进hex editor后能找到PK头,考虑是隐写,拿去kali用binwalk分离可以得到最后一个压缩包。
这个压缩包没有任何提示,但是可以猜出是伪加密,拿进hex editor把09改为00即可打开获取flag了。(我的文字很多,你忍一下)
3-3.好康的流量。
流量分析题,追踪TCP流,可以找到图片的base64码位置:
拿去base64转图片可以得到这样一张图:(话说这张图一点也不涩啊!)
考虑到是png格式的图片,因此考虑隐写。
用stegsolve打开,在G2通道处可以发现有条形码:
扫描可以获得flag的前半部分:
再考虑LSB隐写,可以得到flag的后半部分:
3-4.群青(其实是幽灵东京)
拿到wav文件,根据提示拿去silenteye分析,无密码分析找不出来,考虑到有密码,用Yoasobi去试发现可以:
打开链接拿到S_S_T_V.wav,用RXSSTV慢扫描可以得到这样一张图片:
然后就是为斯卡蒂献上心脏扫描QR code即可获取flag。
4.PWN
4-1.enter_the_pwn_land
这题说来很惭愧,只是一道简单的ret2libc,但是我当时没有考虑到i的取值因此一直没做出来(
4-2.enter_the_evil_pwn_land
不会,看官方wp罢(
4-3.oldfashion_orw
同上。
4-4.ser_per_fa
同上。
4-5.test_your_nc
感谢官方。
解法如题。
4-6.test_your_gdb
这题有点意思,用了一个很复杂的加密算法,但是生成的密钥是可以通过gdb动态调试获取的。
主函数如下图:
可以看出需要绕过memcmp,然后栈溢出。
查看保护:
gdb动态调试,在SEED_Encrypt处下断点,查看此时RAX:
记录存放的内存地址。
继续运行并挂起,查看此时的内存:
如图,获取密钥的值。
考虑到有后门函数,之后再ret2text即可。
exp如下:
1 | from pwn import * |
5.REVERSE
5-1.easyasm
看题目是要我们阅读汇编代码。
把附件拉进IDA里分析:
不难看出flag经过计算生成的结果最终是存放在seg1段上的。
不难看出,主逻辑是先对flag的每一位先左移四位,再右移四位,把得到的结果相加再异或0x17。
这样的实际效果就是在16进制表示的情况下,先把两位互换,再异或0x17.
因此要返还原数据只需要先异或0x17,在换位即可。
代码如下:
1 |
|
运行结果如下图:
5-2.creakme
不会(
5-3.Flag Checker
APK逆向,解包后,在MainActivity$1.smali能找到flag的密码以及密文,在MainActivity.smali能找到加密方式:
用RC4解密即可获取flag。
5-3.猫头鹰不是猫
不会(
6.WEB
6-1.easy_auth
jwt伪造。
先随便注册一个账号登录,在本地存储能找到token:
拿去jwt.io修改json数据。(只要改payload里的username和id即可)
复制伪造的token,替换原来的再刷新就可以获取flag了。
6-2.蛛蛛…嘿嘿♥我的蛛蛛
点到一百关,抓包,在请求头中可以找到flag。(当时没截图,现在不想再点一遍了)
6-3.Tetris plus
打到3000分的时候会有一个alert,因此合理怀疑是藏在js里了,
果然在检查分数的js里发现了被注释掉的jsfuck,拿去解密即可得到flag:
6-4.Fujiwara Tofu Shop
不会(