pwn2_sctf_2016的32位和64位、[ZJCTF 2019]EasyHeap 的收获

[ZJCTF 2019]EasyHeap [ZJCTF 2019]EasyHeap 使用checksec查看: 一道堆题,关闭了PIE,可以考虑覆盖got表来获取system getshell 拉进IDA中查看: 标准的菜单,main()函数就不贴截图了,menu()函数也没有营养,图也不贴了, 先来看看create_heap(): heaparray[i]:存放 chunk 的地址。 read_input(heaparray[i], size):向 chunk 写入 size 大小的内容。 heaparray是存放在bss段上的 edit 阅读详情
  1. [ZJCTF 2019]EasyHeap

堆菜鸡题后简 结,见谅

查看保护机制:

Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)

本题的思路就是:
控制heaparray附近的区域,覆盖heaparray[0]处为free_got的地址,使之被作为chunk看待,edit覆盖free_got地址为system_plt地址,而后利用delete中的free以
**(&heaparray + idx)**为参数,将参数内容写位"/bin/sh\x00",再次调用delete即可。

这里的堆指针是被放在heaparray数组中的,而IDA中查看可知,这个数组被放在.bss段,
而且还有system函数,那么不用泄露libc基地之了。分析IDA中的汇编代码知道:delete函数调用的free函数将
(&heaparray + idx)
作为参数意思是如果这个是"/bin/sh\x00"的话正好。
很明确了,我们可以先申请一个fastbin将其释放,而后利用其上一个的edit功能覆写其fd指向相对heaparray[0]低地址处的空间,为了成功绕过检查必须使大小相同。

关键体验是:利用fastbin攻击,虽然无法double free,但是这里先释放一个fastbin而后利用物理相邻低地址处的chunk,对其进行覆盖溢出,修改其fd,fd指向的地方被当作chunk,这个chunk大小要和被释放的chunk一致,两次申请得到fd指向chunk的地址,就是控制权。这里要修改free_got地址倒是比较方便,可以将其放入heaparray[0]处,使free_got地址被当作chunk,而后直接edit覆盖。

  1. pwn2_sctf_2016的32位
payload='a'*(0x2c+4)+p32(printf_plt)+p32(main)+p32(printf_got)

对这句的理解:为什么p32(main)能够成功?
payload被覆盖至栈中后,等于是给栈进行了状态化,也就是此时是一个就绪态,覆盖过程可以看作执行函数前该函数的参数传递的过程,传递完成后,只等执行。后续程序执行只会利用栈,辅助指令执行,而不是取修改栈,所以如此。

  1. pwn2_sctf_2016的64

寄存器传参数中printf函数的调用,构造两个参数:一个字符串,一个地址,关键是字符串:含有**%s**可以让read_got地址处的数值以字符的形式被输出。

BUUCTF Pwn [ZJCTF 2019]EasyHeap unlink+freehook做法 后续修改0x6020E0的位置为freehook 再修改一次 让其指向system 最后free掉chunk2 就能执行binsh了。delete_heap函数已经将指针清零 无UAF。edit_heap允许自己输入读取字节 存在堆溢出。同时 存储的指针位于bss段。 阅读详情

相关推荐

pwn2_sctf_2016

pwn2_sctf_2016 WriteUp BUU_PWN

m0sway的博客 925

welpwn [XCTF-PWN][高手进阶区]CTF writeup攻防世界题解系列24

题目地址:welpwn 本题是高手进阶区的第13题,先看看题目 照例检查一下保护机制 [*] '/ctf/work/python/welpwn/a9ad88f80025427592b35612be5492fd' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found ...

重新启程 1437

手把手教你用QEMU虚拟化华为路由器固件(附完整网络配置指南)

本文提供了一份详尽的QEMU虚拟化华为路由器固件的实战指南。从固件解包、网络桥接配置到QEMU虚拟机启动,手把手教你搭建完整的嵌入式设备沙箱环境,特别适合安全研究、逆向分析和学习嵌入式系统工作原理。

tgb3456789的博客 937

萌新详解[ZJCTF 2019]EasyHeap,带你走进pwn世界

安全保护 IDA查看 main int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // eax char buf; // [rsp+0h] [rbp-10h] unsigned __int64 v5; // [rsp+8h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(stdout, 0LL, 2, 0LL); se

qq_36495104的博客 2246

Ubuntu20.04复现instant-ngp,自建数据集,导出mesh

本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。

weixin_59961223的博客 9451

latex写论文(TeXstudio工具)

目录前言IEEE模板模板免费分享参考文献写作方法我的.tex文件代码 前言 学校老师要求我们以IEEE顶级会议格式与标准写报告,于是过程虽然麻烦点,但是效果还是不错了,下面先展示一下自己写完的效果。 IEEE模板 我是在 Overleaf 上注册了个账号下载了模板,里面有各种会议论文的写作模板,这个注册还挺麻烦,要外网注册,国内邮箱都不行。进行后点菜单,菜单里有下载源码。 https://cn.overleaf.com/project/5fe5b082dff088649fc67106 模板免费分享 已

小样yx的博客 6752

[ZJCTF 2019]EasyHeap-patchlibc-调试

后面只用关注伪造的fd地址0x6020C8即可,也即是heaparray_addr - 0x18。heaparray_addr = malloc(chunk0)这里获得的就是&chunk[0];1、伪造chunk[2]=[全局地址-3];chunk[3] = [全局地址-2]通过修改chunk[3]的值 ->控制 &chunk[0] ->4、给任意地址填入内容,chunk[0] = [任意内容]3、填入控制任意地址,chunk[3] = [任意地址]chunk[3] ->实现[任意地址]写。

个人笔记 786

分子动力学仿真软件:LAMMPS_(16).应用案例分析

通过以上四个应用案例,我们详细介绍了如何使用LAMMPS进行不同系统的分子动力学仿真。从简单的液体水仿真到复杂的纳米管仿真,每个案例都包含了详细的步骤说明和代码示例。读者可以通过这些示例实际操作并验证结果,从而更好地理解LAMMPS的功能和使用方法。希望这些案例能够为读者在分子动力学仿真领域的研究和应用提供帮助。

kkchenjj的博客 837

pwn入门堆题[ZJCTF 2019]EasyHeap

buuctf上一道简单的堆题wp,希望对新手有帮助(虽然我也只是刚学不久的新手啦QAQ),非常简单的利用方式,比uaf还简单(看wp前建议去wiki了解一下unsortedbin的相关知识)。

m0_73575406的博客 847

【RT-DETR有效改进】轻量级网络ShuffleNetV2(附代码+修改教程)

从今天开始正式开始更新RT-DETR剑指论文专栏,本专栏的内容会迅速铺开,在短期呢大量更新,价格也会乘阶梯性上涨,所以想要和我一起学习RT-DETR改进,可以在前期直接关注,本文专栏旨在打造全网最好的RT-DETR专栏为想要发论文的家进行服务。RT-DETR剑指论文专栏,持续复现各种顶会内容——论文收割机RT-DETR​​。

Snu77的博客 1994

Vue3 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码)

vue3,nuxt3,海康威视,海康监控,摄像头监控,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue3对接海康监控设备,无法连接,报错,vue3对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue3,海康,vue海康视频监控,

🏆 前端领域优质创作者 1万+

[BUUCTF]-PWN:[ZJCTF 2019]EasyHeap解析

这是buu上的一道堆题,话不多说直接看保护和ida这里有一个要注意的点,那就是它是partial RELRO,Full RELRO开启说明got表不可写,而这里没有,这是我们解题的一个前提。然后看ida。这里不过多解释,主要还是创建堆块,释放堆块,edit堆块,但是没有打印堆块内容的函数。还有一个要注意的点,那就是他有system函数,并且参数似乎可以利用。虽然在我解题的过程中这个函数压根得不到flag,但我还是想从这一角度讲解一下解题思路,所以我分两个角度来讲。

2301_79326813的博客 1071

2024年12月数据月报

2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例

SmartSi 2654

BUUCTF [ZJCTF 2019]EasyHeap

pwn新手小白,写完题后整理的一点点思路,有借鉴其他wp,有任何问题各位师傅可以提出,接收批评指正

2401_88087539的博客 546

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

丨汀、的博客 3216

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

buuctf [ZJCTF 2019]EasyHeap题解

【代码】buuctf [ZJCTF 2019]EasyHeap题解。

2501_92438811的博客 275

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

BUUCTF-[ZJCTF 2019]EasyHeap1

经典堆菜单。

Rt1Text的博客 1240

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

[ZJCTF 2019]easyheap

poc为利用unlink攻击的脚本,并没有写很多细节,如果不懂unlink攻击,可以看到最后链接的博客学习一下再来看这篇博客

2301_81060697的博客 766

[BUUCTF-pwn]——[ZJCTF 2019]EasyHeap

[BUUCTF-pwn]——[ZJCTF 2019]EasyHeap 思路 我们第一个想法肯定是执行l33t这个函数,事实证明被摆了一道。没有结果, 但是我们有system函数我们可以将其放入我们可以操控的函数,比如printf、puts、gets、free等函数的got表,通过传入/bin/sh来解决。利用uaf就可以达到其目的。 exploit from pwn import * context(os='linux',arch='amd64',log_level='debug') p = remot

Y_peak的博客 1189

BUUCTF pwn——[ZJCTF 2019]EasyHeap

BUUCTF 做题练习

CNS-Enterprise BCC-1701-J 466

[BUUCTF]PWN——[ZJCTF 2019]EasyHeap

[ZJCTF 2019]EasyHeap 附件 步骤: 例行检查,64位程序 试运行一下看看程序大概执行的情况,经典的堆块的菜单 64位ida载入,首先检索字符串,发现了读出flag的函数 看一下每个选项的函数 add 这边size的大小由我们输入控制,heaparray数组在bss段上存放着我们chunk的指针 edit,简单的根据指针修改对应chunk里的值,但是这里的size也是由我们手动输入的,也就是说只要我们这边输入的size比add的时候输入的size大就会造成溢出 delete,释

mcmuyanga的博客 785

buuctf [ZJCTF 2019]EasyHeap

这题只有add,edit,delete三个主体部分,没有show的部分 create_heap函数,chunk的指针保存在bss段的heaparray数组处 edit_heap函数,注意这里输入的数据长度是可以自己设置的,就可以随意溢出了 delete_heap函数 除此之外,还有这样一个l33t函数: 在程序中,你只要满足一定的条件,是可以运行这个函数的,我猜测在[ZJCTF 2019]比赛进行的时候可能这个函数是可以利用的,但现在在buu上面是用不了的,flag文件的目录不对。不过,这个sys

weixin_45677731的博客 1200
上一篇: 关于ubuntu16安装pwndbg的惨痛经历,以及终于找到的解决办法
下一篇: 关于canary的绕过题和ciscn_2019_es_7中看srop的看系统调用
Hvf0x
博客等级 码龄7年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值