@Time : 2018/10/7
今天玩picoCTF时遇到的一道题,需要nc进入之后,限时30s回答完全问题才能得到flag
当然,写了个小脚本,也觉得时间挺够的,还是能撸出来,但是一想,如果以后提交时间限制更短怎么办,于是便有了今天的文章,学会简单使用pwntools!
首先肯定是pwntools的安装,在Ubuntu里面安装的话,一点也不麻烦的,直接就是
sudo pip install pwntools
当然这个是python2的,听说python3的pip是不能直接下的,需要去git
安装好之后,就要简单的使用了,先上脚本
import pwn
import re
def deal1(a):
b = a.split(" ")
c = ''
for i in b:
c += chr(int(i,2))
return c
def deal2(a):
c = ''
for i in range(0,len(a),2):
c += chr(int(a[i:i+2],16))
return c
def deal3(a):
a = a[1:]
b = a.split(" ")
c = ''
for i in b:
c += chr(int(i,8))
return c
def run(r,deal):
text = r.recvuntil(":")
print(text)
res = re.findall("Please give me the (.*?) as a word.",text)
get = deal(res[0])
print(get)
r.sendline(get)
if __name__=='__main__':
r = pwn.remote("2018shell3.picoctf.com",1225)
run(r,deal1)
run(r,deal2)
run(r,deal3)
text = r.recvuntil("}")
print(text)
这里我只使用到了三个函数:
remote
设置目标机的信息,用来建立远程链接,url或ip指明了主机,port设置端口
recvuntil
这是接受消息,直到什么停止这样,类似的还有几个,recvline 接受一行消息 , recvall 接受所有的消息(这个比较慢,不推荐使用)
sendline
发送一行消息,还有 send 等
这样就实现了简单的自动化回答他的题了,最后结果截个图