美文网首页
pwn学习笔记之小技巧篇

pwn学习笔记之小技巧篇

作者: jessica1123 | 来源:发表于2018-09-01 11:20 被阅读31次

    1.怎么获取environ环境变量地址?

    关于environ的解释:http://tacxingxing.com/2017/12/16/environ/
    获取:

    image.png
    在peda下面还可以用vmmap来查看内存的情况
    image.png

    2.怎么获取libc里的read,write等函数的地址偏移?

    复制 linux 下依赖的 libc.so.6 文件到 IDA 里面,其中用 ldd 命令可以查看可执行文件的依赖库。


    image.png

    在IDA里用 crtl +F 可以快速检索 read,然后点击对应的函数就可以查看没有载入的时候 read函数的地址。


    image.png

    3.怎么获取libc版本号?

    使用工具:LibcSearcher:https://github.com/lieanu/LibcSearcher

    4.地址寻找小结

    image.png
    image.png
    image.png

    5.success()、format()、next()等函数的使用

    • success()和format()格式化输出


      image.png
    • next()常用寻找字符串“/bin/sh”


      image.png
      image.png

    6.recvuntil()获取6字节地址分析

    原因是虽然在64位计算机中,一个地址的长度是8字节,但是实际上的计算机内存只有16G内存以下,所以一般的地址空间只是用了不到 2^48 的地址空间。因此实际的操作系统中,一个地址的最高位的两个字节是00,而且实际栈地址一般是0x7fxxxx开头的,因此为了避免获取错误的地址值,只需要获取前面的6字节值,然后通过ljust函数把最高位的两字节填充成00。 我们可以用这种一般的写法:

    u64(p.recv(6).ljust(8, "\x00"))
    

    7.使用flat()函数来格式化payload

    image.png

    可以看到需要事先使用context()函数声明arch,不然的话默认会使用p32来打包
    实例:


    image.png
    image.png

    8.使用ROPgadget来寻找gadgets

    使用实例:


    image.png

    相关文章

      网友评论

          本文标题:pwn学习笔记之小技巧篇

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