Y1rannn 发表于 2022-4-13 12:21

PCTF某逆向题目求助

(https://pan.baidu.com/s/1KJ1lY1vVDHYsa-BK_pauWQ?pwd=mu7w)
题目来源ichunqiu_pctf, 本身应该不会是恶意程序,但是本人不对此作出任何保证.(本比赛已于4.10结束, 现在不是赛时)
题目名字: Seeing_is_believing
题目描述: 眼见为实?
悬赏需求: 详细给出文件得到flag的分析报告, 并能适当的解答我的一些关于该文件的问题
## 注意:flag格式为flag{}, FL4g开头为假flag!
---
分析了一下午始终不知道怎么找到真flag, 最离谱的是假flag能过文件检测, 但是赛方赛时明确说了FL4g是假flag

提示: 在0x422FDC处有一字符串"li zai gan sen m?" 整个程序流均未使用

请求各位师傅指点, 如果有任何疑问请直接跟帖, 我看到就会回

Y1rannn 发表于 2022-4-13 12:30

题目应该不算求脱求破吧..., 但是发完才看到版规, 我还是补一下我自己的分析过程:
main_0下有大量花指令, 但是注意到esp显然大于0x1000, ja条件必成立, 直接跳转到410145处即可
首先运行一个401005生成表
字符串经过一次位运算和一次与固定表的异或, 再转16进制和定值对比进而输出Winner
401005很奇怪, 首先它给定表赋值并做了一点变换, 但是在401005的末尾没有leave指令, 直接返回esp会来到函数4010B0, 4010B0完全抛弃了401005的运算而重新给这个表赋值了, 结果就是主程序中最后用的表
这样分析出来的结果是FL4g{N1NJAC0NNOR}, 但是这个flag是假flag

小朋友呢 发表于 2022-4-30 11:29

楼主这个题目我也分析过,猜测作者可能在程序的运行过程中将密文进行了替换,但自动态调试后发现和静态分析的一样,又猜测它会不会是Hook了某个函数,核心验证算法在那个Hook的函数里,但也没发现被Hook的痕迹

Y1rannn 发表于 2022-5-17 09:51

小朋友呢 发表于 2022-4-30 11:29
楼主这个题目我也分析过,猜测作者可能在程序的运行过程中将密文进行了替换,但自动态调试后发现和静态分析 ...

是的, 我甚至把这道题的非动态链接的所有库函数都跟了一遍, 但是仍然没能发现hook点.... 我的硬件断点打给密文, 然后在程序start就断下来, 也没能找到替换的地方
页: [1]
查看完整版本: PCTF某逆向题目求助