0


2022年安徽省大学生网络安全攻防赛(本科组)

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

标签: web安全 安全

本文转载自: https://blog.csdn.net/xccwxy/article/details/128664829
版权归原作者 Sentry_Shork 所有, 如有侵权,请联系我们删除。

“2022年安徽省大学生网络安全攻防赛(本科组)”的评论:

还没有评论