Problem: [SWPUCTF 2022 新生赛]upx
思路
- 解题大致思路
基本信息
- 题目名称:[SWPUCTF 2022 新生赛] upx
- 题目链接:https://www.nssctf.cn/problem/2653
- 考点清单:UPX壳,逆向技术
- 工具清单:UPX,IDA Pro,die
什么是壳呢?🤔
简单描述就是:壳是保护可执行文件防止反汇编逆向的保护层。
3.1 看到什么
题目关键信息列表:
下载附件后发现是zip文件,解压后发现是p04.exe文件
3.2 解题思路
既然还是exe文件,那么思路大致仍然是查壳,有壳脱,无壳直接丢进IDA进行静态调试分析,分析不出就用动态调试,再写脚本得出flag
3.3 尝试过程和结果记录
-
先查壳,发现64位有upx壳(有壳就无法直接丢进IDA进行分析了,比较犟的可以不脱壳放进IDA试试,嘿嘿)

-
有壳那就脱去,那么怎么脱壳呢(脱壳其实是一个很复杂的操作,许多魔改壳,没见过的壳等等,都需要一步步动态调试脱去~~(很磨人)~~,这里只介绍最简单的upx壳,使用upx工具进行脱壳)
使用upx工具输入命令
upx -d 文件路径
即可完成脱壳,可以再放进die里面查看,发现已经没有了

-
接下来就是放进IDA里

逻辑很简单,输入的flag的每个字符和2进行亦或运算,然后于V4字符串比较,相同就是正确的flag。
-
编写脚本
得到flag:NSSCTF{UPX_1s_xord_way_to_encrypt_flag}
EXP
-
具体攻击代码
如下:def decode_xor2(s): return ''.join(chr(ord(c) ^ 2) for c in s) enc = "LQQAVDyWRZ]3q]zmpf]uc{]vm]glap{rv]dnce" flag = decode_xor2(enc) print("flag:", flag)
总结
- 对该题的考点总结
upx
