web 9
首先把環境下載下來,然后,界面是這樣子
給了你用戶名了,沒有密碼,慣性思維使我認為是sql注入,那我就試着做了一下,可是都沒有回顯,不知道是啥問題。或許是過濾了?還是怎么樣。反正就是回顯不了。
那我就掃描一下目錄吧,拿出我們的dirsearch掃它一手: python dirsearch.py -u 網址 -e php ,利用這個命令就可以掃描了。
發現了,一個robots.txt文件,訪問一手。
發現index.phps,確定源碼泄露。訪問index.phps下載源碼
1 <?php 2 $flag=""; 3 $password=$_POST['password']; 4 if(strlen($password)>10){ 5 die("password error"); 6 } 7 $sql="select * from user where username ='admin' and password ='".md5($password,true)."'"; 8 $result=mysqli_query($con,$sql); 9 if(mysqli_num_rows($result)>0){ 10 while($row=mysqli_fetch_assoc($result)){ 11 echo "登陸成功<br>"; 12 echo $flag; 13 } 14 } 15 ?>
這便是源碼。大家可以發現,第七行的這段代碼: $sql="select * from user where username ='admin' and password ='".md5($password,true)."'"; sql查詢,我們看查詢條件,用戶名是admin,密碼是利用md5加密后的結果,
語法:md5(string,raw)
參數 | 描述 |
string | 必需。規定要計算的字符串。 |
raw | 可選。規定: TRUE - 原始 16 字符二進制格式 FALSE - 默認。32 字符十六進制數 |
將密碼轉換成16進制的hex值以后,再將其轉換成字符串后包含'or’xxxx
這樣,條件就成了username ='admin' and password =‘ ’or 'xxxxx'
。對語句進行了閉合,其實就是拼接成了萬能密碼。
看了大佬的博客,得來了字符:ffifdyop
輸入此字符串即可獲得flag