1.原理
二次注入:攻击者构造的恶意数据存储到数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。
2.二次注入方法
利用二次注入方法关键是找到一个能引用自己插入的数据的数据表
比如某个网站有两个操作,分别是注册帐号和修改帐号密码
比如注册源码如下:
//..regiest.php
# Building up the query........
$sql = "insert into users ( username, password) values(\"$username\", \"$pass\")";
mysql_query($sql) or die('Error Creating your user account, : '.mysql_error());
echo "</br>";
//··················
我们将注册一个帐号,
帐号:admin'#
密码:123456
此时,可能会有一些php函数将参数中的特殊字符转义,使无法进行sql注入,但是这些数据存入数据表的时候,转义符号将消失,恢复出之前的数据
// ...chanagepassword.php
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
这是因为上面的数据库更新语句,在用户名为 "admin'#" 时执行的实际是:
$sql = "UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='$curr_pass' ";
理解的不是很充分,明天在修改