我有一个 Web 应用程序,我知道它是用 C 语言编写的,它在指定的 IP 地址和端口上运行。我可以使用 telnet
或 nc
访问该应用程序。对于每一个,一旦连接,就会提示我输入。
由于我已经获得了二进制文件的副本,因此通过 strings
和 hd
运行它表明应用程序正在寻找要验证的特定字符串。
我想访问该域上的一个文件,但我似乎无法使用 telnet
或 nc
来访问该文件,因此我认为 code>cURL
或 ftp
在这里是更好的选择。
但是,由于此正在运行的服务发生的字符串验证并不是真正的密码,因此我不确定如何使用 cURL
或 ftp 将此字符串值传递到服务中
。我的直觉告诉我,我可能需要将命令构造为 POST
,但由于这绝对不是 HTTP
服务,我不确定如何继续。
有什么想法吗?
最佳答案
(不是答案,但太长,无法作为评论发布)
处理无文档的自定义协议(protocol)时,telnet/curl/wget肯定不适合,nc也不实用。编写您自己的客户端。
你说服务器正在等待一个字符串?好吧,也许你可以对其进行字典攻击,让客户端尝试大字典中的所有内容(例如this?),寻找任何非标准响应,然后从那里开始。添加您在二进制文件中找到的任何字符串,ofc
如果这对你毫无帮助,也许二进制文件容易受到定时攻击?也许你可以通过定时攻击提取它正在寻找的字符串
并且因为您已经有了二进制文件,所以您可以通过反汇编程序运行它并研究汇编代码,它应该揭示它是否容易受到定时攻击,以及如果字符串是硬编码的,它正在寻找什么字符串因为,尽管如此,阅读编译的汇编代码确实很困难..(游戏破解者总是这样做来破解视频游戏复制保护)
关于c - 通过 cURL(或 FTP)将值传递给 C 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49088150/