简介

  之前在复现自己做出来的题时,一样的思路发现拿不了 shell 了,后来发现是栈迁移的坑。

问题

  假设 32 位系统中,漏洞函数可以任意写入 0x00000000。

  现在我们已经用双 leave 迁移栈,然后运用 rop 技术泄露 got 表地址,如下:

0x00000000    0x0
0x00000004 puts_plt <=== esp
0x00000008 return_addr
0x0000000c puts_got

  当我们泄露完地址,从返回地址返回漏洞函数后

0x00000000    0x0
0x00000004 puts_plt
0x00000008 return_addr
0x0000000c puts_got <=== esp

  可以看到,漏洞函数就会把 puts_got 上部分作为它的栈,然后我们需要双 leave 迁移和写入其他的 rop ,就会出现如下情况

                             双 lieave              ROP
0x00000000 0x0 0xaaaaaaaaa 0x0
0x00000004 puts_plt 迁移的目标地址 read_plt
0x00000008 return_addr leave_gadget地址 return_system
0x0000000c puts_got puts_got read 第一个参数

  可以看到,双 leave 会与 rop 重叠,这样就会导致我们利用失败。

解决办法

  • 再次把栈迁移到其他位置。
  • 有些程序的主函数有类似 and esp, 0FFFFFFF0h 可以加以利用。

最新文章

  1. Quartus II中的Waring(转)
  2. [转]NopCommerce 多数据库方案
  3. 1.4 算法 - algorithm
  4. POJ 1474 Video Surveillance(半平面交)
  5. List的使用
  6. lintcode:被围绕的区域
  7. poj 2777Count Color
  8. PHP环境(apache,PHP,Mysql)详细配置方法
  9. POJ1273 最大流 EK算法
  10. Single Image Haze Removal Using Dark Channel Prior翻译
  11. ActiveMQ基本详解与总结
  12. BZOJ 1185: [HNOI2007]最小矩形覆盖 [旋转卡壳]
  13. 团队作业4——第一次项目冲刺(Alpha版本)
  14. MySQL慢查询优化 EXPLAIN详解
  15. HAProxy 参数配置
  16. SqlServer_存储过程
  17. db2常见命令
  18. BZOJ3413: 匹配(后缀自动机 线段树合并)
  19. 【AI科技大本营】
  20. Unity3D笔记十四 力

热门文章

  1. pytorch之 sava_reload_model
  2. 保留yum安装的软件包
  3. vue路由+vue-cli实现tab切换
  4. Blazui 常见问题:我更新了数据,为什么界面没刷新?
  5. C#使用Environment.TickCount 自定义的定时器类
  6. Java日志介绍(3)-Logback
  7. MySQL之ERROR 1558 (HY000): Column count of mysql.user is wrong.解决方案
  8. AB实验人群定向HTE模型5 - Meta Learner
  9. asp.net abp模块化开发之通用树2:设计思路及源码解析
  10. javaSE学习笔记(17)---锁