以下打码有漏,但是无妨,为本地搭建的,非真实站点

后台任意文件上传

漏洞点

/templates/img_check.php

先找到文件上传判断方式,这里$arrType表示的文件类型的允许列表中

image-20230210160653649

跟着去调用去看$arrType,发现允许上传下面几种格式,也就是说Content-Type中只允许这几种方式,应属于白名单,这时候就很简单了

image-20230210161003272

抓包看见Content-Type类型是application/octet-stream

也可以直接上传图片马,在修改后缀

然后将Content-Type类型改为image/jpg,就接着放包,就成功上传,然后访问

image-20230210162337556

image-20230210162406381-1678543697725

后台任意文件删除

漏洞点

if (! empty($_GET['fname'])) {
        
        unlink($dir.$_GET['fname']);
       
    }

这段代码检查GET数组中是否存在非空的fname参数。如果存在fname参数,该代码通过调用unlink函数删除位于_GET数组中是否存在非空的fname参数。如果存在fname参数,该代码通过调用unlink函数删除位于dir.$_GET[‘fname’]的文件。unlink函数通过文件路径删除文件。

image-20230210110003670

跨目录到上级来尝试删除

http://127.0.0.1/templates/img_check.php?fname=../1.php

image-20230210110213224

image-20230210110258930

后台sql注入

image-20230210133750462

找到代码地址定位关键参数:

/templates/message_check.php?search_cat=item&keyword=1

image-20230210134130821

从代码上来看没有任何的过滤和防护措施,可直接做查询,这里的变量是模糊匹配,考虑闭合

image-20230210134450988

搜索框处验证

点击查询会出现的返回了所有结果,这个也是默认点击查询的返回结果,说明返回正常

%' and 1=1--'

image-20230210140539194

此时尝试1=2,返回其他信息,基本可考虑盲注

%' and 1=2--'

image-20230210140949551

尝试时间盲注,判断是否存在延迟函数,使用sqlmap也验证得到时间盲注

' and sleep(5) --+'

image-20230210144539720

未授权访问后台注入

基本上存在一个注入点就可能存在多个注入点,毕竟同一个程序猿的思路是一样的,这里比较好一点的是可以未授权访问到页面,再进行注入

漏洞点

templates/message_count_item.php?s=webname&k=1

首先来看未授权访问,它这个页面是忘记做授权了的,因为这个php中它没有去做授权的操作

image-20230210154647466
来对比下其他文件下面,正常逻辑应该是它使用了

require_once ('../includes/page_validate.php');

去包含了验证登录授权的文件,但是上面文件并没有,所以造成了未授权的情况

image-20230210154753824
接着来看这个注入,同样和上面一样的,没有做过滤等,造成了sql注入

image-20230210150848997

image-20230210150954945

XSS

点位如上相同,也是未授权可以访问到的

templates/message_count_item.php?s=webname&k=1

这里的$_GET[‘k’] 和 $keyword 都是指获取到的搜索关键词

image-20230210152312970

往下找到输入语句,GET[k]_GET['k'] 和 '_GET[k]’ 是相同的,这里知道他要打印出我们可控的语句,此时并没有发现过滤之类的

image-20230210152406350

构造xss

<script>alert("G3et")</script>  

image-20230210152732071

上一篇 下一篇