该脚本使用 PHP 编写,作为数据库,我使用 MySQL。这是脚本本身。
$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);
有人说如果用户分配;DROP TABLE blah;
字符串到变量 $unsafe_variable 它会删除表。
但我尝试了这个例子,
http://localhost/test.php?user-input=DROP%20TABLE%20my_table
但它并没有删除表而是插入了新行(;DROP TABLE blah;)
在表中。
有人能解释一下如何通过 sql 注入来攻击这个脚本吗?
自 PHP 以来,该特定注入将不起作用mysql_query
函数每次调用只允许一次查询。但是,如果以下情况可能有效column
有一个主键或唯一键:
$unsafe_variable = "admin') ON DUPLICATE KEY UPDATE password=MD5(CONCAT('knownsalt', 'newpassword'))#";
最好用长篇大论mysql_real_escape_string
功能:
$sql=sprintf("INSERT INTO table (column) VALUES(%s)",
mysql_real_escape_string($unsafe_variable));
mysql_query($sql);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)