pipiji233 发表于 2023-2-6 13:08

【2023春节】解题领红包之二WP

本帖最后由 pipiji233 于 2023-2-7 21:16 编辑

查壳

好的,并没有加壳

调试

正常启动程序如上图所示,常见的C/C++中的字符串输入有如下函数

scanf():通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
scanf_s():与scanf()功能相同的安全标准输入函数
gets():直接输入字符串,并且只能输入字符串。

对上面所有函数下断点,然后输入假码

好的,很可惜,一个都没断下…

那就搜索字符串吧

按照错误提示来到Length Error, please try again
粗略的分析一下

再来
这次先随机生成29个字符


按照第二个提示进入Wrong,please try again.

有个跳转,跟过去看看

发现了跳转成功,下个断点

我们输入的内容不正确,所以跳转了

我们看看00401417信息窗口中的内容

我们输入的密码是
YTQXTDfagGa1C4zGgBLZceEIdsu8m
而信息窗口告诉我们的是第一个不是”Y”而是”f”
那么我们就可以利用这一点来拼接密码
而0040141A的JNE是为真不跳,所以我们这里就不能让他跳过

将寄存器中的ZF改为1阻止跳过

当来到00401429时循环回了004013F0

由此猜测只有29位的问题答案完全通过对比才能跳出循环
而每次的对比都可以在信息窗口中找到
那么我们只需要将0040141A给NOP掉,然后查看信息窗口即可。

在00401417这下入断点,查看后续的对比





























当全部对比结束后就跳转到成功


根据对比,拼接得到密码: flag{52PoJie2023HappyNewYear}

streetfighterlu 发表于 2023-2-6 13:48

解题领红包

damon7609 发表于 2023-2-6 14:05

看了几个帖子,还得是楼主照顾新人,解题思路明晰、贴图详细,收藏了{:301_973:}

discuz0 发表于 2023-2-6 15:07

进阶帖子,看看{:301_997:}

ivorist 发表于 2023-2-6 16:08

用的什么工具能列一下吗?

Hmily 发表于 2023-2-6 17:51

你这个密码生成用的6啊,我每次都手动输入去数:'(weeqw,文章最后好像有几个图多了?编辑删除一下?

pipiji233 发表于 2023-2-6 18:39

Hmily 发表于 2023-2-6 17:51
你这个密码生成用的6啊,我每次都手动输入去数,文章最后好像有几个图多了?编辑删除一下?

这个图我也不知道哪来的,我编辑里面是找不到的=.=

Hmily 发表于 2023-2-6 20:28

pipiji233 发表于 2023-2-6 18:39
这个图我也不知道哪来的,我编辑里面是找不到的=.=

编辑后看上传那里,应该是传多了一份吧?

lxj2004 发表于 2023-2-6 20:55

hopeallen 发表于 2023-2-9 11:37

菜鸟广泛学习中,每位大佬的方法都略有不同,您在od的使用上令我获益良多,处理得太优雅了
页: [1] 2
查看完整版本: 【2023春节】解题领红包之二WP