我可以用 sqlmap 注入 SQL,但无法理解它是如何工作的。我的脚本上没有echo
orprint
命令,但是 sqlmap 返回带有数据库名称和详细信息的数据。
这是它找到的实例:
$sql ="SELECT * FROM application where id=$id";
$act_res = mysql_query($sql);
如果没有 echo 或 print 并且我也停止了错误报告,那么 sqlmap 是如何通过 sql 注入获取信息的?
我可以用 sqlmap 注入 SQL,但无法理解它是如何工作的。我的脚本上没有echo
orprint
命令,但是 sqlmap 返回带有数据库名称和详细信息的数据。
这是它找到的实例:
$sql ="SELECT * FROM application where id=$id";
$act_res = mysql_query($sql);
如果没有 echo 或 print 并且我也停止了错误报告,那么 sqlmap 是如何通过 sql 注入获取信息的?
您的一段代码有一个安全问题:
你需要清理你的输入$id
。如果您的数据库中的 id 是一个,您可以通过使用
is_int ()函数int
检查它是否是一个来防止 SQL 注入。int
SQLMAP 的脚本将尝试在您的易受攻击的$id
输入中注入。
如果黑客放入ID; SQLInjectionHere--
,$id
查询将是:
SELECT * FROM application WHERE id=ID; SQLInjectionHere"
攻击者将能够在未经许可的情况下执行另一个 SQL 请求。
您还可以在 SQLMAP 上添加详细信息-v
PS:使用 SELECT * 的坏习惯( 为什么? )
一种方法是使用SLEEP()
. 如果您发送SLEEP(5)
, SLEEP(10)
, SLEEP(15)
, 并且响应需要 5.3 秒、10.2 秒和 15.5 秒来生成,那么您可以非常确定您找到了一个漏洞。