sqlmap如何在我的脚本中检测到这个SQL注入?

时间:2015-02-08 11:39:42

标签: php mysql sql-injection sqlmap

我可以用sqlmap注入SQL,但我无法理解这是如何工作的。我的脚本上没有echoprint命令,但sqlmap返回带有数据库名称和详细信息的数据。

以下是它找到的实例:

$sql ="SELECT * FROM application where id=$id";
$act_res = mysql_query($sql);

如果没有回显或打印,我也停止错误报告,那么sqlmap是如何通过sql注入获取信息的呢?

2 个答案:

答案 0 :(得分:2)

您的代码有一个安全问题:

您需要清理输入$id。 如果您的数据库中的ID是int,您可以再次保护SQL注入,并检查它是否为int is_int ()功能。

SQLMAP脚本将在易受攻击的$id输入中尝试注入。

如果黑客将ID; SQLInjectionHere--放入$id,则查询将为:

SELECT * FROM application WHERE id=ID; SQLInjectionHere"

攻击者可以在未经许可的情况下执行另一个SQL请求。

您还可以使用-v

在SQLMAP上添加详细信息

PS:使用SELECT *的不良做法( Why?

答案 1 :(得分:0)

一种方法是使用SLEEP()。如果你发送SLEEP(5)SLEEP(10)SLEEP(15),并且响应需要5.3秒,10.2秒和15.5秒来生成,你可以非常肯定你找到了一个洞