SQL注入中万能密码的原理详解

  在进行SQL注入中常常会有着对登录框的注入,这时我们常常通过万能密码的方式进行绕过登录框进行SQL注入
注:在现在的应用程序已经很难用万能密码进行绕过了,本篇文章仅仅讨论万能密码绕过的原理


一.我们以ctfshow中的一道题来讲解:
  ctfshow-wbe2:
ctfshow
可以发现需要登录用户名和密码来进行登录。
我们直接使用万能密码:admin’ or 1=1 #进行绕过,密码随便输
登录成功
顺利登录成功。
由于本次只讲解万能密码的原理,后面的步骤就不具体演示了。
二.原理讲解
1.要知道具体如何绕过我们就需要知道后台的源代码
一个简单的php+mysql识别前端登录框的代码如下:

<?php
//从前端获取用户输入的用户名和密码
$username = $_POST['username'];
$password = $_POST['password']; 

//执行SQL查询
$query = "SELECT * FROM users WHERE username = '$username' AND password='$password'";
$result = mysqli_query($con, $query)

//验证查询结果
if (mysqli_num_rows($result) > 0) 
{
	//验证通过,登录成功
	echo 'Login success';
}
else 
{
	//验证失败,登录失败
	echo 'Login failed';
}

1.用户通过表单输入用户名和密码,并且该表单通过POST方法提交到服务器
2.php接受到用户名和密码并把它存储到$username和$password中
3.构造sql查询语句,在数据库中查找相关数据
4.进行if…else判断

在我们这行代码中可以做些手脚,当我们把万能密码输入进去后就能发现原因

$query = "SELECT * FROM users WHERE username = 'admin' or 1=1 #'AND password='$password'";

是不是一下就明白了
1.通过or 1=1使得条件永为真
2.然后再通过#将后面的password注释掉,这样整个查询条件为真,相当于where条件没了,查询整个字段的数据

具体的原理知道了,你也来构造一个万能密码把!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值