2022 ctfshow 新手杯 冠军 WP
终于可以出新手村哩!
Reverse
你newbee吗
IDA直接打开就能看到,strings应该也行
色图
只能找到假flag ctfshow{Good_Job_For_First_Step} 非常的迷惑
Coffee Feast (一血)
用 https://github.com/java-deobfuscator/deobfuscator 的反混淆器可以识别,能修几个常量字符串和函数调用参数,修好之后就可以用recaf逆了
逆出来的代码改掉关键字(重命名)之后直接就能跑,就不在这贴了。
(说起来用recaf还是因为T佬用这个A掉了我那个蠢蠢的java红包题)
jd-gui或者idea自己的反编译器逆不出来大概是因为这个混淆框架把变量和函数名都改成了java关键字。
NUl那个类有些复杂,但因为ctfshow
过了NUl之后是个常量,所以运行时跑一遍就行,然后精简掉前后逻辑就只剩下ctfshow
产生的目标Byte数组和未知的pass输入。
1 | public class Main { |
所以就是逆上边那个逻辑,n2和n11其实可以直接反推,剩下的简单逆一下循环位移 xor和加减法就可以 完全对称。
1 |
|
跑出来之后序是反着的,转了一下就是flag:
1 | r = "ea1fdf8a74ba5570e48ba8a37f64b0c6" |
PWN
leave_msg
6退出是后门,system(echo input())
,直接1 && cmd
就行了。
easy_login
登录地方可以泄露canary和栈上一个指向栈上的指针,直接栈溢出ret2shellcode(长度受限好像刚好不能ROP)。
1 | from pwn import * |
WEB (AK)
easy_eval
<script language="PHP">system($_GET[id])</script>
剪刀石头布(一血)
清除缓存关了而且序列化配炸了,可以改session文件反序列化。
1 | import requests |
baby_pickle
第一次访问传name=I1,之后替换把I1改成I0,同时就改了名字和ID。然后id=0就有flag了
repairman
不知道是不是非预期,那个解析参数的地方可以覆盖config,本地覆盖一个乱七八糟的东西然后就能算出固定的md5了。
有了admin.【】的md5就有无过滤的exec了,我是反弹了shell解的。
简单的数据分析
随机数,精度有限,乘一个足够大的值就没什么差距了
MISC
哇库哇库
纯脑洞题,意识流行为
WAKUwaku密码提示,解出来之后反序hex补PNG头得到图片,宽加0x200得到flag
显卡坏了
每隔固定间距插了随机空白色块,写脚本去掉就能完美还原。
1 | from PIL import Image |
简单密码
伪加密->文件尾发现反序的zip头,提取IEND后部分反序得到zip
命令行crc爆破头尾发现都有hex的结果,推测避重都是hex,于是爆破
1 | import itertools |
爆破出来的是一堆base,组合用basecrack和cyberchief就能全梭出来,得到狸の祝福
CRYPTO
easy_base
反序->base64
凯撒密码
按他给的表直接把26值都打一遍就有一个flag了
OSINT(AK)
天上的路
(找到了,但没有完全找到)
百度 彩虹路
热点最高的是那什么一号公路,但怎么提交都不对,后来群里有人说要写详细地点,xxxx站。
于是百度 xx一号公路 红房子 "站"
找到两个驿站,有一个就是了。
都可以黑
电影名怎么找到的来着,搜图中名字可以找到演员,然后就能搜出这部电影,flag第二部分是图片中的名字带下划线(描述啊喂)。
Demystify Coffee(一血)
用文件尾的仓库 https://github.com/lqs1848/AllatoriCrack
查官方文档可知 xml在仓库的demo附件里第五章。java -Xms128m -Xmx512m -cp allatori_crack.jar com.allatori.Watermark -extract ExtractWatermark.xml
运行就能导出flag
WARMUP
热身题目
flag在console里
2022 ctfshow 新手杯 冠军 WP