-
-
[原创]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直播授课
赞赏
看原图
赞赏
雪币:
留言: