首页 web安全

1.原理

二次注入:攻击者构造的恶意数据存储到数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。

dMET9H.png

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注入,但是这些数据存入数据表的时候,转义符号将消失,恢复出之前的数据

dMei7V.png
这时,我们可以利用更改密码中的php代码进行二次注入

// ...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' ";

理解的不是很充分,明天在修改




文章评论