pwn学习笔记之小技巧篇

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 0x01 Start checksec 的时候可以看到程序没有打开任何的安全保护措施,然后查看IDA下的汇编代码,...
    Nevv阅读 1,731评论 0 2
  • 对于政府的权责问题,我自己本身的观点也是矛盾的,一方面希望通过尽可能的减少政府的权责来避免会不由自主地不断扩大的臃...
    Spaceblanco阅读 378评论 0 0
  • 【20180716 星期一】 今天是小宝驾到的第20天,是小宝吃黄疸药的第四天,是爸爸...
    小素莞秋阅读 231评论 0 0
  • “你知道稻草吗?” “救命稻草?” “不,是压倒骆驼的最后一根稻草” 又想到了死,怎么会这么悲观呢。到底是哪里出错...
    MUS阅读 186评论 0 0