MENU

Catalog

    通过LIBC基址来爆破TLS

    September 30, 2021 • Read: 2041 • Pwn,CTF

    在有些情况下,我们需要知道 TLS 的位置以便于修改其中的一些值,例如 canary、tcache struct ptr、key。

    但是在大多数情况下,远程的 ld.so 距离 libc 基址的位置不确定与本地 patchelf 之后的不一致,这时候优先可以考虑起一个 docker 来看看偏移(因为题目大多数都是用 docker 搭建的),我这里推荐这个项目:https://github.com/PIG-007/pwnDockerAll

    如果还是不正确,则说明我们需要爆破偏移,这里的爆破偏移和往常的不同,因为这个偏移值的量在每次连接的时候都是固定的,所以我们只要循环执行足够多的次数,那么就一定能够攻击成功。而且偏移的变化值往往在地址末尾的第四个、第五个数(末三位不变),我们只需要考虑爆破这两个数字即可。

    这里提供一个爆破的模版,可以参考一下

    for x in range(0x10):
        for y in range(0x10):
            try:
                libc_base = 0x1234
                offset = 0x6 << 20
                offset += x << 16
                offset += y << 12
                ld_base = libc_base + offset
                log.success("try offset:\t" + hex(offset))
                # your code
                sh.interactive()
            except EOFError:
                sh.close()
    Last Modified: May 2, 2022
    Archives QR Code
    QR Code for this page
    Tipping QR Code
    Leave a Comment

    已有 1 条评论
    1. [...]第一种办法是爆破,参考wjh大佬的博客:https://blog.wjhwjhn.com/archives/593/[...]