首页
社区
课程
招聘
[原创]KCTF 2022 秋季赛 第二题 栈溢出多解
发表于: 2022-11-21 23:58 5737

[原创]KCTF 2022 秋季赛 第二题 栈溢出多解

2022-11-21 23:58
5737

栈溢出导致多解问题

1
在题目刚出的时候,有做过,但是没做出来!这两在看各位大佬解析后,也是豁然开朗;在今天看到这个gets()时,突然感觉被闪电劈了一下,然后IDA在其下方下断点看了看,果然这里gets()的存放空间为栈空间,这个时候各位应该明白我的意思了,诶嘿!我在输入一段长度的“fff”之后,进一步调试得到这个函数Error返回的栈地址:

1
如果我们构造一个输入,刚好修改到这各返回地址‘0x0040292F’,并将修改地址改为下图Success的地址‘0x004027E6’呢?

1
2
3
4
找到对应字符:
    SetConsoleOutputCP(437); //这是为了能输出Ascii码超过127的字符
    char ss[] = { 0xE6, 0x27, 0x40, 0 };
    printf(ss);

最后,我构造的输入为:“ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffµ'@”,这是64个“f”加3个地址转换的字符“µ'@”。
验证结果:

(PS: 虽然有些取巧,但也是能输出Success的。)


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//