是否可以使用带有使用 mod rewrite(或类似的东西)的 url 的 sqlmap 来测试 SQL 注入漏洞以使 url 干净?
我知道如何测试具有以下网址的网站:
http://mysite.com/?id=1
但是我的网站有干净的网址呢,比如: http://mysite.com/1
是否可以使用带有使用 mod rewrite(或类似的东西)的 url 的 sqlmap 来测试 SQL 注入漏洞以使 url 干净?
我知道如何测试具有以下网址的网站:
http://mysite.com/?id=1
但是我的网站有干净的网址呢,比如: http://mysite.com/1
您应该*
在 URI 中使用,创建 URI 注入点。所以不要使用:
sqlmap.py -u "website.com/script/paramrewrited1/paramrewrited2"
利用:
sqlmap.py -u "website.com/script/paramrewrited1*/paramrewrited2*"
有关更多使用选项,请参阅sqlmap wiki。从该页面:
URI注入点
当注入点位于 URI 本身内时,有一些特殊情况。sqlmap 不会对 URI 路径执行任何自动测试,除非手动指出。您必须在命令行中指定这些注入点,方法是
*
在您希望 sqlmap 测试和利用 SQL 注入的每个 URI 点后附加一个星号 ( )。例如,在使用Apache Web 服务器的mod_rewrite模块或其他类似技术时,这特别有用 。
有效命令行的一个示例是:
$ python sqlmap.py -u "http://targeturl/param1/value1*/param2/value2/"
如果我理解你的问题,我相信 sqlmap 不是为处理这种情况而设计的(网络服务器不遵循如何表示请求参数的网络标准)。所以,我可以想到几个选择:
关闭 URL 重写。暂时关闭 Web 服务器上的请求参数重写(如果有简单的方法),让您运行 sqlmap。
尝试 POST 请求。您向我们展示了您的 Web 服务器以非标准方式对 GET 请求的请求参数进行编码。它如何编码 POST 请求的请求参数?如果它以更标准的方式传达 Web 服务器对请求参数进行编码,并且如果每个请求都可以通过 GET 和 POST 访问(配置错误,但很常见),那么您可能会通过发送 POST 请求而不是 GET 请求来测试您的服务器。请参阅--data
sqlmap 的选项。
使用其他工具。寻找其他工具,因为 sqlmap 似乎不是为这种特殊情况设计的。
修改sqlmap。sqlmap 是开源的。您可以深入研究源代码并对其进行扩展以支持您想到的用例。(您可能想查看处理-p
sqlmap 选项的代码。)哎呀,它是免费的;你必须预料到,如果你有一个不寻常的情况,它可能还没有处理它,你可能需要自己做一些工作。如果您遵循这条路线,请通过将您的代码捐赠给 sqlmap 维护者来回馈社区。
无需重构 URL。SQLMAP 接受以下变体:
www.target1.com/vuln1.php?q=foobar www.target2.com/vuln2.asp?id=1 www.target3.com/vuln3/id/1*
由于搜索引擎优化 (SEO),您经常会遇到这种情况。
例如,而不是以下内容:
http://www.com/index.phpoption=com_blahbla&Item=2&ItemId=5
你看:
http://www.website.com/index,51,blabla
或者
http://website.com/guestbook/page2
在这种情况下,必须检查适用的源代码。
必须确定:
在基于 Joomla 的网站上,将评估以下代码:
<input type="hidden" name="option" value="com_blabla" />
<input type "hidden" name="ItemId" Value="5" />
<input type="hidden" name="Item" Value="2" />
<input type="hidden" Name="entry" Value="451" />
<input type="hidden" Name="view" Value="entries" />
一旦做出此决定,就可以将 URL 重建为其原始形式,如果存在漏洞,则可以成功利用。
http://www.website.com/index.phpoption=com_blabla&Itemid=5&ItemId=2&Entry=451&View=Entries