pwn2(入门级)
环境啥的就是在linux下进行操作,具体环境配置我觉得发了有点灌水(本篇也有点小水)拿到文件后
1.checksec一下
附说明(我也不是特别深刻理解,自行体悟吧):
· RELRO:RELRO会有Partial RELRO和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表
· Stack:如果栈中开启Canary found,那么就不能用直接用溢出的方法覆盖栈中返回地址,而且要通过改写指针与局部变量、leak canary、overwrite canary的方法来绕过
· NX:NX enabled如果这个保护开启就是意味着栈中数据没有执行权限,以前的经常用的call esp或者jmp esp的方法就不能使用,但是可以利用rop这种方法绕过
· PIE:PIE enabled如果程序开启这个地址随机化选项就意味着程序每次运行的时候地址都会变化,而如果没有开PIE的话那么No PIE (0x400000),括号内的数据就是程序的基地址
· FORTIFY:FORTIFY_SOURCE机制对格式化字符串有两个限制:(1)包含%n的格式化字符串不能位于程序内存中的可写地址。(2)当使用位置参数时,必须使用范围内的所有参数。所以如果要使用%7$x,你必须同时使用1,2,3,4,5和6。
2.列出函数们
3.查看system函数地址
4.查看汇编
4.1这个是system
4.2这个是get_shell_
5.用pattern(python的包哈)生成乱序字符串
6. 进行溢出调试让他报错
7. 查看覆盖RBP的字符串
8.查看偏移:48
9.写脚本:
使用脚本定位溢出字符串为48,在栈帧中,RBP下方为返回地址所以覆盖返回地址的字符串是从48+8开始的。这里的8是因为该程序为64bit程序RBP为64位寄存器。
10结果:
这是一个附件:
[文件链接](https://pan.baidu.com/s/1Qj2YcbqHfk0-kh-G3K_ZZg):
提取码:vn4i 小木曾雪菜 发表于 2021-8-1 15:38
objdump是怎么生成intel格式汇编的?
其实我也不太会啦,大家一起学习~~
objdump可以用来查看目标文件或者可执行的目标文件
常用参数:
-f 显示文件头信息
-D 反汇编所有section (-d反汇编特定section)
-h 显示目标文件各个section的头部摘要信息
-x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定。
-i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。
-r 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。
-R 显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库。
-s 将所有段的内容以十六进制的方式打印出来
-S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。
-t 显示文件的符号表入口。类似于nm -s提供的信息
原文链接:https://blog.csdn.net/u014608280/article/details/81948141 风是故乡轻 发表于 2021-9-1 17:04
多敲敲,很快就能熟悉常用命令,然后会接触更多有用的知识,加油! ^-^
谢谢~就是平时接触的机会少点了~ 感谢教程
楼主辛苦了 学习ing,谢谢分享 谢谢楼主分享经验,学学总是好的 objdump是怎么生成intel格式汇编的? 学习了,谢谢 学习ing,楼主辛苦 谢谢分享,正好最近在学习