我可以用 sqlmap 注入 SQL,但无法理解它是如何工作的。我的脚本上没有echoorprint命令,但是 sqlmap 返回带有数据库名称和详细信息的数据。
这是它找到的实例:
$sql ="SELECT * FROM application where id=$id";
$act_res = mysql_query($sql);
如果没有 echo 或 print 并且我也停止了错误报告,那么 sqlmap 是如何通过 sql 注入获取信息的?
我可以用 sqlmap 注入 SQL,但无法理解它是如何工作的。我的脚本上没有echoorprint命令,但是 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 秒来生成,那么您可以非常确定您找到了一个漏洞。