吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 419|回复: 4
收起左侧

[CTF] CTF新人日记之pwn——day1

  [复制链接]
Djay09 发表于 2026-10-11 15:14
题目《jarvisoj_level0》,此题来源于BUUCTF

首先最基本的是探测可执行文件的信息,操作如下:




由此可知该可执行文件是动态连接后的64位下elf格式可执行文件,且无栈保护、无用户态下的地址随机化、开启栈不可执行、无stripped
。遵守的是system V ABI调用约定

加之文件体积大小足够小,所以我选择使用objdump工具对其进行反汇编处理,关键的反汇编结果如下:



简单的静态分析可得知程序关键逻辑与栈帧布局状态,关键函数是ulnerable_function与后门函数callsystem,存储在栈帧局部变量空间的数据并没有检验操作,最终导致溢出,由反汇编信息:
4005aa:       48 83 c4 80             add    rsp,0xffffffffffffff80
  4005ae:       48 8d 45 80             lea    rax,[rbp-0x80]
  4005b2:       ba 00 02 00 00          mov    edx,0x200
  4005b7:       48 89 c6                mov    rsi,rax
  4005ba:       bf 00 00 00 00          mov    edi,0x0
  4005bf:       e8 ac fe ff ff          call   400470 <read@plt>
得知该函数存放数据的空间为0x80字节,使用read函数,读入最大字节是0x200
并且开始读入的位置在[rbp-0x80],为了控制rip寄存器指向我想要cpu执行的后门函数,需要构造payload将后门函数的地址覆盖本来的返回地址,计算偏移后可以得出返回地址在[rsp+0x88]处
结合system V ABI下的栈帧管理约定,可以编写出以下简单脚本:


运行脚本并获取flag:

简单栈溢出——作为CTF方向之一pwn的最简单题型之一,虽说简单但其中需要掌握熟悉的是贯穿pwn入门到高级的栈帧管理。

结语:这是我第一次撰写相关的文章,可能有点像wp,但也加入了我的一些感想。我大概是在五个月前开始接触逆向工程,汇编语言、调用约定,栈帧布局等等虽然是基础得东西但是学得让我头大,直到一个月前才逐渐有一些感觉所以就开始学习了pwn。最后希望有人能提供几点学习建议,初次撰写,不足地方颇多,还请见谅。
屏幕截图 2026-10-11 145908.png
屏幕截图 2026-10-11 145711.png

可执行文件反汇编关键部分

可执行文件反汇编关键部分
屏幕截图 2026-10-11 144107.png
屏幕截图 2026-10-11 143516.png

获取可执行文件信息

获取可执行文件信息

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
CCNA + 1 + 1 我很赞同!
xcbjfy + 1 + 1 用心讨论,共获提升!
k1n0cv6 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

HuajiZG 发表于 2026-10-13 21:28
太强了,知识+1
cgtry 发表于 2026-10-14 09:34
 楼主| Djay09 发表于 2026-10-14 17:54
cgtry 发表于 2026-10-14 09:34
没有看懂,唉,老了,落伍了

说实话也有可能是我的表述有问题啦
 楼主| Djay09 发表于 2026-10-14 17:55

谢谢~不过我仍有许多不足,一起加油啦!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-10-15 11:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表