利用 pwntools 编写 socket 脚本

来源:互联网 发布:央视评论网络直播乱象 编辑:程序博客网 时间:2024/05/29 19:12

作者:环保小魏师
链接:https://zhuanlan.zhihu.com/p/21676068
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

今天遇到了一道 ppc 的题目,并不难,连接服务器端口后,计算返回的一个算式,发送答案,连续答对十次拿到 flag。

这一操作一般是利用 Python 的 socket 编程实现,后来看到有人说用 pwntools 也可以做,就尝试了一下。

先放正常的 socket 编程脚本。

# coding=utf-8import reimport socketHOST = '115.159.89.123'PORT = 11002BUFFER = 4096  sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  sock.connect((HOST,PORT))  title = sock.recv(BUFFER)  print(title)i = 1while 1:recv = sock.recv(BUFFER)if recv:print 'calc' + str(i)print recvif re.search(r'(.*?)=', recv):calc = re.search(r'(.*?)=', recv).group(1)result = eval(calc)print resultsock.send(str(result) + '\n')i += 1elif re.search(r'flag', recv):print recvbreakelse:continuesock.close()

pwntools 好像不能再 Windows 下安装,于是转战 Kali。

pip install pwntools

一般来说都可以成功的,如果有问题,或者用的是其他发行版,可能需要先装点别的。

apt-get install python2.7 python2.7-dev python-pip
#! python# coding=utf-8import refrom pwn import *HOST = '115.159.89.123'PORT = 11002BUFFER = 4096  r = remote(HOST, PORT)title = r.recv(BUFFER)print titlei = 1while 1:recv = r.recv(BUFFER)if recv:print 'calc' + str(i)print recvif re.search(r'(.*?)=', recv):calc = re.search(r'(.*?)=', recv).group(1)result = eval(calc)print resultr.sendline(str(result))i += 1elif re.search(r'flag', recv):print recvbreakelse:continuer.close()

区别不是很大,只是做了一点小小的工作。

0 0
原创粉丝点击