百度杯 black_hole复现

在这次复现中,经历了太多挫折。

刚刚开始的时候本地调试 get不到shell,就很疑问,而且不会爆破,想学下怎么爆破出那个0x05,

后来问了位师傅 ,他说用retdl_solve 试试,我就跑去学了,结果,还是不行,而且64位没有leak,也没stdout的,找了两天都没找到这种利用方法。。what_the_fuc;;;;;;

后来还是在群里问了一热心的师傅和sw师傅也解决了这道题。

这道题的利用思路就是利用了

这个 alarm 和syscall  最后一位想差0x5  师傅告诉我,因为alarm的实现就是

syscall(int_alarm, arg),所以可能近点吧。

剩下的思路就明确多了 ,虽然每次只能利用ebp往栈写东西,但是因为是没次进入了两层,又直接跳了出来所以写ebp也能写rop。就是利用了init_gadat 第一次用read在在alarm

后面的最后一位覆盖成0x5,然后往bss写东西,布置好东西就getshell,

下面我只贴出爆破的脚本。

exploit(i)
    io.sendline("aaaaa")
    try:
        if io.recvline():
            io.interactive()
    except:
        io.close()
原文地址:https://www.cnblogs.com/liyuechan/p/10681368.html