二次注入
1、使用特殊的SQL符号注册账号
$username= mysql_escape_string($_POST['username']) ;
$pass= mysql_escape_string($_POST['password']);
$sql = "insert into users ( username, password) values(\"$username\", \"$pass\")";
2、通过当前用户账号修改其他用户密码
# 使用sql语句进行修改密码时进行了SQL注入,UPDATE users SET PASSWORD='$pass' where username='admin'--'and password='$123456'
$username= $_SESSION["username"];
$curr_pass= mysql_real_escape_string($_POST['current_password']);
$pass= mysql_real_escape_string($_POST['password']);
$re_pass= mysql_real_escape_string($_POST['re_password']);
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
总结:
1、二次注入的产生的原因是进行用户注册时没有将外部数据进行过滤,导致使用update语句时进行了SQL注入
2、外部数据是不可信任的注册时需要将SQL中会造成SQL注入的字符和关键字进行过滤
3、使用update语句时没有使用参数绑定,导致SQL注入
文章来源: www.oschina.net,作者:沫子酱,版权归原作者所有,如需转载,请联系作者。
原文链接:https://my.oschina.net/moziBlog/blog/3211403