buuctf6

news2025/1/20 1:08:56

目录

 [ACTF2020 新生赛]BackupFile

[RoarCTF 2019]Easy Calc 

  利用PHP的字符串解析特性Bypass:

  http走私攻击

来首歌吧

荷兰宽带数据泄露​编辑

面具下的flag


 [ACTF2020 新生赛]BackupFile

1.打开环境

 查看源代码得不到任何想要的信息,使用目录扫描来得到我们想要的文件名信息,这里用到 Web 目录扫描工具——dirsearch

使用命令

dirsearch -u http://5037570b-c582-47d0-804b-699775706fe7.node4.buuoj.cn:81/ -e*

发现一个符合的文件——“index.php.bak”

 下载index.php.bak

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

根据题目得,我们需要以 get方式提交一个参数key,且要满足key == str

这里涉及到一个知识点,在 PHP 的弱类型比较中,有两种比价符号

其中==在比较时候是先将字符串类型转化为相同,再比较;===是先判断两种字符串的类型是否相等,再比较

在==转换字符串的过程中,遵循如下原则:

    当字符串开始部分不存在数值的时候,会将该字符串转换为数值 0。如var_dump('abc' == 0),结果为 True
    当字符串开始部分有合法数值的时候,会将该字符串转换为合法数值。如var_dump('123abc' == 123),结果为True
    当字符串中包含 e 或者 E 时,会将其识别为科学计数法。如var_dump('0e12asda' == 0),结果为True

所以该题中,我们要使得$key == $str,且$key不能为字符,故可以构造Payload:?key=123

[RoarCTF 2019]Easy Calc 

1.打开环境

查看页面源代码,看到有calc.php,并且提示有waf

 2.访问这个页面

 使用get方式传参赋值给num,并且使用正则表达式进行了过滤,只要能绕过过滤,就可以通过eval进行任意php语句
3.尝试直接?num=phpinfo()

访问不成功,应该是waf起了作用,根据大佬们的wp知道可以通过在num前加一个空格进行绕过
原理:php解析规则:当php进行解析时,如果变量名前面有空格,php会自动去掉前面的空格再进行解析,假如waf不允许num变量接收字母,那么使用 num就可以,而php解析时就会自动把空格去掉
 

绕过WAF有两种方法

  • num前添加%20绕过对num的检测(PHP的字符串解析特性)
  • HTTP走私之重复Content-Length绕过

方法一  利用PHP的字符串解析特性Bypass:

PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

1.删除空白符

2.将某些字符转换为下划线(包括空格)

.? num=phpinfo()

 5.先使用scandir查看目录中的内容,找到存有flag的文件

 6.但是/被过滤了,尝试绕过。使用chr对/的ascii码进行转换绕过,只有这个才不需要引号

? num=var_dump(scandir(chr(47)))

 

 

 或者使用glob()函数

/calc.php?%20num=var_dump(glob(chr(47).chr(42)))

 根目录发现f1agg,得到f1agg文件。尝试对该文件进行读取

? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

 方法二 http走私攻击 参考:

从一道题到协议层攻击之HTTP请求走私 - 先知社区[RoarCTF 2019]Easy Calc(http走私 && 利用PHP的字符串解析特性Bypass)_HyyMbb的博客-CSDN博客

CL-CL漏洞

两个CL直接导致前端转发的服务器400,而且完整转发了post包给后端。

 CL-TE漏洞

CL和TE直接导致前端转发的服务器400,而且完整转发了post包给后端。

或者构造payload获得Flag
使用scandir()函数readfile()函数base_convert()函数dechex() 函数hex2bin() 函数chr()函数
36进制scandir->10进制61693386291
36进制readfile->10进制2146934604002
ascii码/->16进制2f->10进制47
36进制f1agg->10进制25254448(读取根目录得到的)
首先要使用scandir()函数,尝试构造payload列举根目录下的文件。
scandir()可以用base_convert()函数构造,但是利用base_convert()只能解决a~z的利用。
因为根目录需要/符号,且不在a~z,所以需要hex2bin(dechex(47))这种构造方式,dechex() 函数把十进制数转换为十六进制数。hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。当然,也可以直接用chr()函数

 

 payload:

var_dump(base_convert(61693386291,10,36)(chr(47)))

再读取flag

 payload:

var_dump(base_convert(2146934604002,10,36)(chr(47).base_convert(25254448,10,36)))

来首歌吧

下载了一个音频文件。在audacity打开。发现有两个轨道,上面的就是摩斯密码

 

写成莫斯密码

… -… -.-. ----. …— … -… …- ----. -.-. -… ----- .---- —… —… …-. … …— . -… .---- --… -… --… ----- ----. …— ----. .---- ----. .---- -.-. 

解密得到

flag{5BC925649CB0188F52E617D70929191C}

荷兰宽带数据泄露

RouterPassView——路由器密码查看工具

RouterPassView,大多数现代路由器允许您备份到一个文件路由器的配置,然后从文件中恢复配置时的需要。路由器的备份文件通常包含了像您的ISP的用户名重要数据/密码,路由器的登录密码,无线网络的关键。如果你失去了这些密码 /钥匙,但你仍然有你的路由器配置的备份文件,RouterPassView可以帮助你从你的路由器恢复您丢失密码的文件。

搜索username,外包flag

面具下的flag

1.下载图片,放进010分析。看到有隐藏着的文件。

  拖进kali,得到一个文件夹

文件夹下,这个zip文件被加密 

 放进010分析,发现被伪加密。把09改成00

在终端执行命令解压。得到四个文件夹

7z x flag.vmdk -o./

打开key_part_one

brainfuck解码

 打开key_part_two Ook!编码解码

拼接得到flag 

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

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

相关文章

关于秒杀系统的一系列问题

阻塞队列怎么么实现&#xff1f;超卖问题&#xff1f;整体怎么实现&#xff1f; 5 设计一个秒杀系统 特点&#xff1a;高并发&#xff0c;请求量远大于库存量&#xff0c;只有少数能成功&#xff1b;逻辑比较简单&#xff0c;下单减库存&#xff1b; 设计理念&#xff1a;**限…

ESP8266基于Lua开发点灯示例

ESP8266基于Lua开发点灯示例 ✨基于ESPlorer IDE&#xff1a;https://github.com/4refr0nt/ESPlorer/releases&#x1f527;固件烧录工具&#xff1a;NodeMCU-PyFlasher&#x1f33f;esp8266烧录工具下载&#xff1a;https://github.com/marcelstoer/nodemcu-pyflasher/release…

LabVIEW CompactRIO 开发指南2 CompactRIO软件架构

第一章 CompactRIO软件架构 几乎所有的CompactRIO系统都至少有三个顶层VIs在三个不同的目标上异步执行:FPGA、实时操作系统(RTOS)和主机PC。如果开始软件开发时没有某种架构或流程图可供参考&#xff0c;那么可能会发现跟踪所有软件组件和通信路径是具有挑战性的。拥有一个在…

CentOS7上使用yum搭建LNMP架构并实现wordpress博客实战

前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;阿里云社区博客专家&#x1f609;&#x1f609; &#x1f495; 座右铭&#xff1a; 先努力成长自己&#xff0c;再帮助更多的人 &#xff0c…

魔兽worldserver.conf 服务端配置文件说明

魔兽worldserver.conf 服务端配置文件说明 我是艾西&#xff0c;今天把很多小伙伴需要的魔兽worldserver.conf 服务端配置文件说明分享给大家&#xff0c;大家可以自己研究参考下 worldserver.conf 这个文件是服务端的配置文件&#xff0c;可以在这里做很多个性化修改 注意&a…

SpringSecurity跌坑指南

SpringSecurity跌坑指南 1&#xff0c;事情原委 这两天开始了毕业设计&#xff0c;但是突然发现自己的java方面的基础比较薄弱&#xff0c;于是决定自己从头到尾的开发一个java项目 要说跌的最惨的坑&#xff0c;莫过于springsecurity&#xff0c;如果你只是想要在项目里面配…

〖ChatGPT实践指南 - 零基础扫盲篇⑦〗- 基于 Python 实现的 OpenAI-Library 的简单使用

文章目录 ⭐ python 安装 OpenAI library⭐ 创建 openai.py 进行测试⭐ openai.Completion.create() 方法的小拓展 该章节我们呢来学习一下 OpenAI-Library 的使用&#xff0c;OpenAI-Library 是 OpenAI 官方给我们提供的各种开发语言的库&#xff0c;供我们使用。在前面的章节…

【无标题】基于matlab的长短期神经网络lstm的股票预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的股票预测 MATALB编程实现&#xff0c;附有代码 效果图 结果分析 展望 参考论文 背影 股票市场的波动十分巨大&#xff0c;由于一些不确定因素的影响&#xff0c;导致很难对股票进行投资盈利。因此&…

数据库 SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 解决方法

目录 一、错误提示信息&#xff1a; 二、原因分析&#xff1a; 三、解决方法&#xff1a; 四、执行完成结果&#xff1a; 五、重要说明 一、错误提示信息&#xff1a; 本文验证是数据库中的baiduAi_0258表无法通过select语句ID条件查询&#xff0c; 如执行 select * fro…

远程桌面,openGL

x11、xserver看另一篇博客 openGL是一种规范&#xff0c;用于绘制图像 OpenGL是Khronos Group开发维护的一个规范&#xff08;也就是提供了一种接口&#xff09;&#xff0c;它主要为我们定义了用来操作图形和图片的一系列函数的API&#xff0c;需要注意的是OpenGL本身并非API。…

vscode 配置有误导致的一次Linux 崩溃

一、问题描述 1. 要实现的功能 编写一个Linux 按键驱动&#xff0c;按下按键时&#xff0c;产生中断&#xff0c;在中断中启动定时器进行防抖处理。 2. 出现的问题 在中断处理函数中&#xff0c;调用 add_timer 函数设置定时器超时函数&#xff0c;并启动定时器。编写完驱动…

【消息队列】Apache Pulsar存储计算分离

前言 对于一个互联网项目来说&#xff0c;一般除了在语言层面的技术选型外&#xff0c;也会引入各种中间件&#xff0c;比如缓存、消息队列、搜索、NoSQL等&#xff0c;但是跳出语言层面来看的话&#xff0c;其实我们庖丁解牛之后&#xff0c;每个中间件都解决了特定的问题。 …

计组 作业九

作业9 题量: 36 满分: 100 作答时间:04-27 10:56至05-10 23:59 89.5分 一. 单选题&#xff08;共18题&#xff0c;39分&#xff09; 1. (单选题, 2分)Intel80486是32位微处理器,Core是______位微处理器。 A. 16B. 32C. 48D. 64 我的答案…

20.网络爬虫—Scrapy-Redis分布式爬虫

网络爬虫—Scrapy-redis详讲 Redis的安装与使用分布式概念和作用分布式爬虫分布式爬虫特点redis的使用Redis 操作/启动 Redis Desktop Manager下载特点和架构安装和使用Scrapy-redis 代码部署spider文件 settings文件 前言&#xff1a; &#x1f3d8;️&#x1f3d8;️个人简介…

wsl2使用open3d等进行图像绘制

在~/.bashrc文件中添加两个环境变量 export DISPLAY"grep nameserver /etc/resolv.conf | sed s/nameserver //:0" export LIBGL_ALWAYS_INDIRECT0 第一行是让wsl将openGL命令&#xff08;图形绘制命令&#xff09;输出到哪里&#xff0c;也就是x-server的位置&…

【Linux】指令(上)

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;Linux ⭐代码仓库&#xff1a;Linux 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

机器学习在生态、环境经济学中的应用及论文写作

近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c;目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…

08_ThreadPool线程池

1. 架构说明 Java中的线程池是通过Executor框架实现的&#xff0c;该框架中用到了Executor&#xff0c;ExecutorService&#xff0c;ThreadPoolExecutor这几个类。 Executor接口是顶层接口&#xff0c;只有一个execute方法&#xff0c;过于简单。通常不使用它&#xff0c;而是…

什么是shell脚本和简单shell脚本练习

文章目录 什么是shell脚本和简单shell脚本练习什么是shell脚本为什么要学习shell脚本第一个脚本编写与执行编写第一个脚本 简单的shell脚本练习简单案例交互式脚本&#xff1a;变量内容由用户决定随日期变化&#xff1a;利用date建立文件数值运算&#xff1a;简单的加减乘除数值…

java内存占用过大分析,mat内存快照分析

背景 最近功能模块上线后&#xff0c;生产内存占用显著提升&#xff0c;查看gc日志发现年轻代频繁从2G回收到60M左右&#xff0c;猜测是在方法中频繁创建大对象导致&#xff0c;由于一时间无法通过review代码找出问题所在&#xff0c;只好将生产jvm内存快照dump后通过java mem…