MISC
没有文件后缀
使用kali对justfile文件进行挂载:
查看文件夹内容:
使用gunzip < 1进行查看大约再153行位置可以看到内容:
拼出flag即可: gunzip < *
瞅啥
使用kali对图片进行分离得到一个加密压缩:
修改图片长宽高得到解压密码:
直接对压缩包进行解压得到flag:
misc103
直接使用strings对文件进行检索
RE
debug32:
查壳:无壳,32位ELF文件:
在linux中运行无反应:
之后直接拖入IDA:
main函数,里面没东西,找字符串:.rodata:080485F0 0000000E C Printing
flag
跟踪,找到函数unsigned int
sub_804849B():
这里可以看出是直接输出flag值的,看一用C去写脚本,运行一下出flag:
flag{i_has_debugger_skill}
迷宫又来了
查壳:
64位exe的程序,拖入IDA中:
找到main()函数,之后进行跟踪,分析
根据题描述:得到迷宫的地图,以及走的方向
这里可以看出是按照字符键盘的方向,上:w;下:s;左:a;右:d;
找到地图:map
长度为:200,观察可得一行为20,共10行:
手动改图:*为0,.为1:
直接走迷宫,第一行与最后一行不算:
得到步骤:ddsssddsdsdddwwwddssssdddsdddd
步骤传给了:str,
最后有个^运算,得到脚本:
result;
Exp:
li-elf:
拖进IDA,F5 代码如下(修改了部分的):
整体特征为流程未输入,加密,然后加密后的结果满足上面的方程即可,使用 z3 即可求解加密输出:
import z3
import struct
solver = z3.Solver()
result = [z3.BitVec(f'x{i}', 32) for i in range(4)]
solver.add(result[0] * result[3] == 0x73BC53B7FD0436EC)
solver.add(result[0] - result[1] == 0x5587EBBD)
solver.add(result[3] - result[2] == 0x18AF7242)
solver.add(result[2] * result[1] == 0x316CBFAD58F2D963)
if solver.check() == z3.sat:
temp = solver.model()
print(''.join(struct.pack('L', temp[result[i]].as_long()).hex() for i in
range(4)))
else:
print("无解")
加密结果为: 743d42aab751ba54b5855595f7f704ae
使用IDA插件 signsrch 发现了 DES 的特征:
分析发现,sub_400E20 函数为 des 算法函数,参数含义为 待加密数据,密钥,加密解密标志位,16应
该是输入长度,最后的参数是des的结果
发现 d 表示解密。
结合上述得出的加密结果,动态调试设置sub_400E20 函数的第三个参数为解密标志位d,输入设置为刚
刚得出的加密结果:
执行后内存里拿数据即可
最后flag{hope_u_good_game}
CRYPTO题
下载文件得到base32加密,通过在线网站解密得到ro13加密串
对rot13进行解密得到flag
crypto-4-LCG
线性同余算法,用文中的算法即可得到a,b,再可求出seed
seed,a,b,q已知,撰写脚本可以直接得到flag
版权归原作者 Sentry_Shork 所有, 如有侵权,请联系我们删除。