-4

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

这是它找到的实例:

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

如果没有 echo 或 print 并且我也停止了错误报告,那么 sqlmap 是如何通过 sql 注入获取信息的?

4

2 回答 2

2

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

你需要清理你的输入$id。如果您的数据库中的 id 是一个,您可以通过使用 is_int ()函数int检查它是否是一个来防止 SQL 注入。int

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

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

SELECT * FROM application WHERE id=ID; SQLInjectionHere"

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

您还可以在 SQLMAP 上添加详细信息-v

PS:使用 SELECT * 的坏习惯( 为什么?

于 2015-02-10T18:25:14.613 回答
0

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

于 2015-09-24T01:39:15.220 回答