我不确定我是否完全理解你,但无论如何我都会试一试。
以下说明将解释如何实现这样的目标:|
radare2 带有自己的网络服务器。虽然乍一看似乎有点矫枉过正,但它实际上非常有用,尤其是当您想调试嵌入式系统或只是从远程终端执行命令时。
只需=h <port>
使用任何 HTTP 客户端启动 Web 服务器并连接到它。
您可以使用以下命令打印此命令的帮助=h?
:
[0x00000000]> =h?
|Usage: =[hH] [...] # http server
| http server:
| =h port listen for http connections (r2 -qc=H /bin/ls)
| =h- stop background webserver
| =h-- stop foreground webserver
| =h* restart current webserver
| =h& port start http server in background
| =H port launch browser and listen for http
| =H& port launch browser and listen for http in background
因此,让我们使用 oneliner 命令生成一个带有与我们心爱的会话的radare2 Web 服务器/bin/ls/
:
$ r2 -c=h /bin/ls
Starting http server...
open http://localhost:9090/
r2 -C http://localhost:9090/cmd/
好的,现在我们有一个 HTTP 服务器在一个开放的会话中运行,让我们连接到它。
你可以这样做curl
:
$ curl http://127.0.0.1:9090/cmd/?EHello,World!
.--. .--------------.
| _| | |
| O O < Hello,World! |
| | | | |
|| | / `--------------'
|`-'|
`---'
您甚至可以从您喜欢的浏览器执行此操作:
虽然它很酷,但它对您没有帮助——您要求使用 r2pipe 的解决方案。嗯……有!
什么是 r2pipe?
r2pipe API 基于在 r_core_cmd_str() 后面找到的单个 r2 原语,该函数接受描述要运行的 r2 命令的字符串参数并返回带有结果的字符串。
来源:r2pipe 存储库
您可能知道,使用 python,您可以使用“/bin/ls”执行import r2pipe
并r2pipe.open("/bin/ls")
打开一个radare2会话。您知道可以使用 r2pipe 连接到远程 Web 服务器吗?对。
让我们编写一个快速脚本来做到这一点:
import r2pipe
print("[+] Connecting with python r2pipe")
r2_remote = r2pipe.open("http://127.0.0.1:9090")
command = "?E Welcome from server!"
while command != "stop":
print (r2_remote.cmd(command))
command = raw_input("r2cmd > ")
将脚本保存到poc.py
您的驱动器上。
现在让我们r2 -c=h /bin/ls
在一个终端和python poc.py
另一个终端中运行:
是的,radare2 也可以打印二维码。