TypechoJoeTheme

霍雅的博客

登录
用户名
密码
/
注册
用户名
邮箱

2024长城杯(ciscn)样题 reverse wp(Write-up)

2024-12-11
/
0 评论
/
220 阅读
/
正在检测是否收录...
12/11

  宝宝题,先用查壳工具查看,无壳32位

直接IDA32打开发现plz enter the flag和一串特殊字符

双击进去查看这个特殊字符,按X查看调用情况,发现主函数main调用

打开主函数,发现一串数组和一个加密函数

简单解释一下V7=用户输入
V12数组的长度等于V7
判断V7不为空,继续判断V12数组是否等于13
成立就跳出,下面的部分是干扰代码
之后的判断V12数值下标等于之前特殊字符Byte_415768数值V10的下标,下标在一开始就看到了,长度位17,所以前13位就是数值下标对应的特殊字符Byte_415768
写脚本可得KEY{e2s6ry3r5s8f6

str = "KfxEeft}f{gyrYgthtyhifsjei53UUrrr_t2cdsef66246087138\\0087138"
v10 = [1, 4, 14, 10, 5, 36, 23, 42, 13, 19, 28, 13, 27, 39, 48, 41, 42, 26, 20, 59, 4, 0]

# 从1开始提取字符
result = [str[i - 1] for i in v10]  # 将索引减去 1
print(result)

很显然这不是完整flag,代码往下看,可以看到关键语句

if ( v12[17] != 49 || v12[18] != 48 || v12[19] != 50 || v12[20] != 52 || v12[21] != 125 )

意思是V12[17,18,19,20,12]的值不为49,48,50,52,125就输出\r\n也就是结束,因为125超出数组长度,所以这五个值是ascii码,也就是1024}
所以最终flag为:KEY{e2s6ry3r5s8f61024}

朗读
赞(0)
版权属于:

霍雅的博客

本文链接:

https://huoya.work/bk/index.php/archives/87/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月