Bak*_*yor 10 php mysql sql-injection
该脚本使用PHP,而DB则使用MySQL.这是脚本本身.
$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
有人说如果用户将;DROP TABLE blah;字符串分配给变量$ unsafe_variable,则会删除该表.
但我试过这个例子,
http://localhost/test.php?user-input=DROP%20TABLE%20my_table
Run Code Online (Sandbox Code Playgroud)
但它没有删除表,而是在表中插入了一个新行(;DROP TABLE blah;).
有人可以解释一下如何用sql注入来攻击这个脚本吗?
Ric*_*ões 13
由于PHP的mysql_query函数每次调用只允许一个查询,因此该特定注入不起作用.但是,如果column具有主键或唯一键,则以下内容可能有效:
$unsafe_variable = "admin') ON DUPLICATE KEY UPDATE password=MD5(CONCAT('knownsalt', 'newpassword'))#";
Run Code Online (Sandbox Code Playgroud)
最好使用冗长的mysql_real_escape_string功能:
$sql=sprintf("INSERT INTO table (column) VALUES(%s)",
mysql_real_escape_string($unsafe_variable));
mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2308 次 |
| 最近记录: |