SQLi Labs Lesson24

Lesson - 24

POST - second Order Injection *real treat* - Stored Injection


首先进入界面:




点击Forget_your_passoword?,结果如图所示:


那我们先注册一个账号:

username为:test

password为:test


用test登陆,界面如图所示:


在登陆界面尝试了各种单引号双引号等,发现没有卵用。


那么只能读源代码了,找注入点。

$username= $_SESSION["username"];
$curr_pass= mysql_real_escape_string($_POST['current_password']);
if($pass==$re_pass)
{	
    $sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
    ......
}

发现了这里SQL语句直接用了SESSION存储的username。

而SESSION中存储的username,

$_SESSION["username"] = $login;

$login = sqllogin();
function sqllogin()
{
     $username = mysql_real_escape_string($_POST["login_user"]);
   $password = mysql_real_escape_string($_POST["login_password"]);
   $sql = "SELECT * FROM users WHERE username='$username' and password='$password'";
   echo $sql;
   $res = mysql_query($sql) or die('You tried to be real smart, Try harder!!!! :( ');
   $row = mysql_fetch_row($res);
    //print_r($row) ;
   if ($row[1]) 
     {
      return $row[1];
   } 
     else 
     {
      return 0;
   }

}

所以在update那条SQL语句中的username就是数据库中存储的usernname。

本节中的用的转义mysql_read_escape_string并没有改变字符串在数据库中的存储,即:

$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);

的结果虽然是:

Escaped string: Zak\'s and Derick\'s Laptop

但是insert into foo values (...,'$escaped_item',...)后

在数据库中存储的还是:Zak's and Derick's Laptop


综上,我们创建一个用户:

username为:test'#

password为:123456

登陆该用户后,更改该用户密码:

新密码为:hack

点击Reset后,结果如图:


此时,我们进入phpmyadmin查看users表

发现test的密码,由原来的test,变为hack。

而test'#的密码没有改变。

此时回过头来看,更改密码的SQL语句:

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
实际执行的SQL语句为:

UPDATE users SET PASSWORD='hack' where username='test'#' and password='123456'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值