一、使用Pwn4Sage库原因
在当下的ctf密码学题目里面难题很多都是采用交互的形式来获取有关值,一般用到的都是pwn库。
我所使用的sage主要放在window上面因为下载的时候比较方便。但是,在安装pwn库的时候,因为一些依赖项在Cygwin环境中无法正确构建无法安装,主要问题出在`unicorn`、`bcrypt`和`cryptography`。又不想手动安装一些依赖,便找到了这款在win环境下面的pwn的平替库Pwn4Sage。
二、安装方法
在你的SageMath Shell里面输入
pip install Pwn4Sage
在此,我已完成安装所以出现以上截图
三、Pwn4Sage介绍和使用方法介绍
1.平替pwn
在我个人看来Pwn4Sage是pwn的win版sage平替库,我将
from pwn.all import *
直接替换成为
from Pwn4Sage.pwn import *
运行代码下来看也是没有什么问题。
pypi官网上面介绍的是"还有bug, 不建议在比赛中使用",可能也有不成熟的地方在。
2.主要用法
1.send(msg)
-
作用:发送一条消息
msg
到远程服务。 -
用法:conn.send(b"Hello, World!")
2.sendline(msg)
-
作用:发送一条消息
msg
到远程服务,并在末尾添加换行符\n
。 -
用法:conn.sendline(b"Hello, World!")
3.recv(num)
-
作用:从远程服务接收指定数量
num
的字节数据。 -
用法:data = conn.recv(1024)
4.recvuntil(msg)
-
作用:接收数据直到遇到指定的消息
msg
。 -
用法:data = conn.recvuntil(b"Enter your choice: ")
5.recvline()
-
作用:接收一行数据,直到遇到换行符
\n
。 -
用法:line = conn.recvline()
6.recvline_contains(key_words)
-
作用:接收一行数据,直到遇到包含指定关键字
key_words
的行。 -
用法:line = conn.recvline_contains(b"flag")
7.sendafter(delim, data, timeout=None)
-
作用:等待接收到指定的分隔符
delim
后,再发送数据data
,可以设置超时时间timeout
。 -
用法:conn.sendafter(b"Password: ", b"my_secret_password")
8.interactive()
-
作用:启动一个交互模式,可以手动与远程服务进行交互。
-
用法:conn.interactive()
9.close()
-
作用:关闭与远程服务的连接。
-
用法:conn.close()