我正在一个网站上测试SQL注入。
基本上,我在下面的url中尝试它:
http://example.org/webpage/*
在哪里,应该注入有效载荷来代替*。当我尝试放入这个:' OR 1=1/*时,url将是:http://example.org/webpage/'%20OR%201=1/*- -这是输出:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '/*', 'IT', 'name=\' OR 1=1/*', 1499954730)' at line 1这是否意味着它容易受到SQL注入的攻击?如果是,我如何尝试利用sqlmap?这就是我试着运行的:
$ sqlmap -u "http://example.org/webpage/*",但它说没有什么可以注射的,我认为它失败了。
发布于 2017-07-13 14:34:13
我可能错了,但我相当肯定您的主要问题是您试图错误地执行mysql注入。通常的经验法则是,如果有效负载可以触发SQL语法错误,那么防止SQL注入的尝试就不会真正起作用。例如,如果使用准备好的查询,则有效负载根本无法导致SQL语法错误。
在这种情况下,问题在于您使用了错误的注释来隐藏命令的其余部分。在这种情况下,如果使用双破折号(--)或庞德符号(#),在MariaDB中启动单行注释,则可能会有更多的运气(使SQL注入发生)。您使用的注释字符(/*)是一个多行注释字符,没有结束注释字符。这似乎是SQL错误的来源。虽然我本人并不熟悉sqlmap,但我怀疑它可能并不认为存在注入漏洞,这不是因为您是安全的,而是因为您的注入有效负载正在生成SQL错误,因此不会发生注入。用正确的注释字符再试一次。
重申一下,您得到了一个SQL错误,这使我认为您很容易受到SQL注入的影响,只是没有正确地执行SQL注入。
我认为您的下一步是忽略sqlmap一点。您正在进行的攻击' OR 1=1将选择所有记录。您的URL意味着这是一个view类型的页面,它一次只显示一个记录。因此,在许多情况下,这样的SQL注入有效负载可能实际上在页面上没有任何结果。这是让它变得棘手的部分:只有当您能够对攻击进行实际操作并以有意义的方式影响应用程序时,SQL注入才是“成功的”。因此,例如,如果有效负载导致它加载SQL命令中的所有记录,但所讨论的页面仅隐式显示第一个结果(因为它是view-type页面),那么您就不会意识到注入已经成功。
其缺点是,给定的SQL注入有效负载是特定于上下文的,并且可能不会在给定网站上的所有位置工作,即使该页面易受SQL注入的影响。这使得SQL注入更加棘手。有些sql注入工具可以自动化其中的一些技巧,但我不知道sqlmap是否是这样的工具。
所以暂时甩掉sqlmap吧。尝试另一种有效载荷。不要选择' OR 1=1,而是尝试执行' AND 1=0。这(理论上)应该导致零记录。因此,如果您得到404 (或一般情况下也不是结果),我将考虑到该页面易受SQL注入影响的证据。
当然,如果你感觉很刻薄,你可以在'; DROP TABLE users--上尝试变体,直到某些东西中断为止:),尽管如此。
发布于 2017-07-14 07:11:10
你好,2u。
你在注射点上弄错了。http://example.org/webpage/‘%20 bad %201=1/*<--坏http://example.org/webpage/*/ <--好
尝试用web调试器(e.x)捕获完整的http请求。LiveHTTPHeaders / BurpSuite)并将其保存到文件(e.x。req.txt)。在此之后,使用以下字符串启动sqlmap : python sqlmap.py -r req.txt --线程10 --级别5--风险3--随机代理--批处理-v 3,并在这里粘贴输出。
祝你一切顺利N.T。
https://security.stackexchange.com/questions/165101
复制相似问题