buuctf web 前5题
目录
一、[极客大挑战 2019]EasySQL
总结:
二、[极客大挑战 2019]Havefun
总结:
三、[HCTF 2018]WarmUp
总论:
四、[ACTF2020 新生赛]Include
总结:
五、[ACTF2020 新生赛]Exec
总结:
一、[极客大挑战 2019]EasySQL
EasySQL,根据题目盲猜是sql注的题目

检查源码发现传参方式为GET


随意输入用户名和密码,发现有回显
预测后端代码应为:
<?php
//连接mysql
$servername="localhost";
$username="root";
$password="root";
$dbname="mydata";
.
.
.
$username=$_GET['username'];
$password=$_GET['password'];
$sql=select * from users where username='$username' and password='$password';
$ result=query($sql);
.
.
.
?>
根据数据库查询规则,使用万能密码
admin ' or 1=1 #
ps:select * from users where username='admin' or 1=1#' and password="";
admin后的 ' :为了和前面的 ' 形成闭合
or 1=1:形成查询永真条件
#:将后面条件注释掉


总结:
sql注入万能密码:admin ' or 1=1 #
二、[极客大挑战 2019]Havefun

打开网址查看源码,发现一段注释的内容
<!--
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
-->
GET请求通过URL请求参数,可以在URL后面添加参数,以“?”作为分隔符,参数之间用“&”符号链接。
解释:GET传参cat。输出cat。如果cat=dog。输出一串类似flag的东西。

总结:
GET请求通过URL请求参数,可以在URL后面添加参数,以“?”作为分隔符,参数之间用“&”符号链接。
简单php代码。
三、[HCTF 2018]WarmUp

打开网址,检查以源码。发现隐藏页面source.php

转到source.php可以看到一段php代码
<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist = ["source"=>"source.php","hint"=>"hint.php"];if (! isset($page) || !is_string($page)) {echo "you can't see it";return false;}if (in_array($page, $whitelist)) {return true;}$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}$_page = urldecode($page);$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}}if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}
?>
先来查看一下,hint.php里的内容

ffffllllaaaagggg这里flag被复写了四次,可以猜测flag被放在4到5个根目录下,即写成../../../../ffffllllaaaagggg或../../../../../ffffllllaaaagggg
再对上面php代码进行逐行分析:
<?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page)//创建一个函数{$whitelist = ["source"=>"source.php","hint"=>"hint.php"]; //增加白名单,包含source.php和hint.phpif (! isset($page) || !is_string($page)) {//$page不为空或NULL(!isset($page))或(||)不为字符串(!is_string($page))echo "you can't see it";return false;}if (in_array($page, $whitelist)) {//in_array的意思是判断page里是否包含白名单里的内容,即是否包含(source.php或hint.php)return true;}$_page = mb_substr($page,0,mb_strpos($page . '?', '?'));/*这里mb_substr返回字符串的一部分mb_substr(需返回字符串(类型:sting),从哪个数字代表的位置开始(类型:int),截取长度(类型:int))mb_strpos(要被检查的字符串,要搜索的字符串)最终返回要被检查字符串的位置(类型:int)综合来看就是mb_strpos函数,检索$page中?的位置,并返回?所在的位置数,mb_substr函数将从0开始,到?位置的$page字符串返回到型变量$_page*/if (in_array($_page, $whitelist)) {return true;}/*in_array(被搜索的值,搜索的数组,类型)经过上面的截取代码,$_page是否存在source.php或hint.php,如果存在就返回true*/$_page = urldecode($page);/*进行一次url解码,将%3F解码为?所以这里将?写做%3F也无法实现绕过*/$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));if (in_array($_page, $whitelist)) {return true;}//这一部分解释同上echo "you can't see it";return false;}}if (! empty($_REQUEST['file'])//判断文件不能为空&& is_string($_REQUEST['file'])//并且,传入参数为字符串&& emmm::checkFile($_REQUEST['file'])//并且,调用函数(白名单)要过白名单检测,过了之后,即可看到包含了flag的文件) {include $_REQUEST['file'];exit;} else {echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";}
?>
构造playload(1)=http://ip/?file=souce.php?../../../../ffffllllaaaagggg
playload(2)=http://ip/?file=souce.php?../../../../../ffffllllaaaagggg
playload(3)=http://ip/?file=hint.php?../../../../../ffffllllaaaagggg
分别进行尝试



(中间有靶机到期自动销毁的情况,截图的网址有变化)Q^Q
总论:
mb_strpos和mb_substr截取内容,碰到?就截止,所以我们只需要输入/?file=source.php?即可绕过白名单检测
四、[ACTF2020 新生赛]Include
进入网页,打开源码,只有tips有提示

点击tips,跳转到/?file=flag.php,还是什么也没有

根据题目(include)提示,可以猜测flag在/?file=flag.php页面中,但是被注释了,所以我们就要想办法获取网页的源码。
所以这里可以想到要构造php伪协议
PHP伪协议也是php支持的协议和封装协议。
常见的有
- file:// 访问本地文件系统
- php:// 访问各个输入/输出流
- data:// 数据
- zip:// 压缩流 不过有些伪协议需要allow_url_fopen和allow_url_include的支持
php://
- php:// 访问各个输入/输出流I/O streams在CTF中经常使用的是php://filter和php//input
- php://filter用于读取源码php://input用于执行php代码。
php://filter伪协议
php://filter/参数=转换过滤器
参数:
1.resource=<要过滤的数据流>
2.read=<读链的过滤器>
3.write=<写链的过滤器>
4.<;两个链的过滤器>转换过滤器:
1.convert.base64-encode & convert.base64-decode<等同于base64_encode()和base64_decode(),base64编码解码>
2.convert。quoted-printable-encode & convert.quoted-printable-decode<quoted-printable 字符串编码解码>
php://input读取POST数据
说明
可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。 enctype=”multipart/form-data” 的时候 php://input 是无效的
参数可以同时使用,两两之间使用 / 隔开
本题构造的伪协议格式:
/?file=php://filter/read=convert.base64-encode/resource=flag.php
得到一串base64编码

将base64编码解码

总结:
php伪协议,获取网页源码,用于获取简单的被注释掉的重要信息
伪协议构造格式中的一种:
/?file=php://filter/read=convert.base64-encode/resource=flag.php
五、[ACTF2020 新生赛]Exec
打开靶机看到ping,先输入网址127.0.0.0进行测试


可以看到执行ping命令有回显


而单独输入查询命令时没有回显,由于ping命令可以与管道符连用,先尝试用管道符连接ls


连接ls发现有回显,尝试用cd逐层发打开文件





打开到第三层的时候,出现了flag,我们只要cat一下flag即可


既然ls命令可以用,我们不妨大胆一点
直接cat /flag


嚯!这也行!直接一步到位,所以我前面在干嘛……
ps:补充一下管道符的用法
| :按位或,直接执行后面的语句
& :按位与,前面后面的都要执行,不管真假
|| :逻辑或,相当于or
&& :逻辑与,相当于and; :作用与&相同,前后都会执行
总结:
ping命令后可跟管道符,管道符的用法。
相关文章:
buuctf web 前5题
目录 一、[极客大挑战 2019]EasySQL 总结: 二、[极客大挑战 2019]Havefun 总结: 三、[HCTF 2018]WarmUp 总论: 四、[ACTF2020 新生赛]Include 总结: 五、[ACTF2020 新生赛]Exec 总结: 一、[极客大挑战 2019]…...
stable diffusion实践操作-提示词-人物服饰
系列文章目录 stable diffusion实践操作-提示词 文章目录 系列文章目录前言一、提示词汇总1.1 人物服饰11.2 人物服饰2 前言 本文主要收纳总结了提示词-人物服饰。 一、提示词汇总 1.1 人物服饰1 耳饰帽子内裤内衣上身饰品手部[月牙耳环][头顶光环][丁字裤][胸罩][披风][太…...
Tomcat加载静态资源--防止SpringMVC拦截
最简洁方式:使用API 在配置文件下写配置类SpringMvcSupport,并且让SpringMVC扫描到此文件夹ComponentScan({"com.itheima.controller","com.itheima.config"}) SpringMvcSupport配置类如下 Configuration public class SpringMvcS…...
【AI数字人】如何基于ER-NeRF自训练AI数字人
文章目录 环境配置前期准备数据预处理音频预处理训练bug测试度量标准用指定的声音进行推理参考ER-NeRF,能够以更小的模型尺寸和更快的速度训练合成逼真的3D talking portrait。 环境配置 ER-NeRF项目开源于两个月前,相比于两年前的AD-NeRF,使用更新版本的tensorflow和各种…...
多目标应用:基于多目标哈里斯鹰优化算法(MOHHO)的微电网多目标优化调度研究MATLAB
一、微网系统运行优化模型 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标哈里斯鹰优化算法MOHHO 多目标哈里斯鹰优化算法(Multi-Objective Harris Hawks Optimizer&#…...
[运维|中间件] 东方通TongWeb忘记密码后修改密码
参考文献 Tongweb忘记密码处理办法 修改密码 以下步骤将thanos用户密码修改为 thanos123.com 编辑twusers.properties文件 vim /path/to/TongWeb7.0/conf/security/twusers.properties将thanos的内容修改为默认的密码信息: thanos3d6391e41e9c4319$3$6774c6fc9…...
无涯教程-Android Mock Test函数
本节介绍了与 Android 相关的各种模拟测试。您可以在本地计算机上下载这些样本模拟测试,并在方便时离线解决。每个模拟测试均随附一个模拟测试键,可让您验证最终分数并为自己评分。 Mock Test I Mock Test II Mock Test III Mock Test IV Q 1 -什么是Android? A -A…...
保留网络[02/3]:大型语言模型转换器的继任者”
一、说明 在这项工作中,我们提出保留网络(RETNET)作为基础架构大型语言模型的结构,同时实现训练并行, 推理成本低,性能好。我们从理论上推导出这种联系 复发与关注之间。然后我们提出保留机制 序列建模&…...
微信小程序-生成canvas图片并保存到手机相册
wxml页面 <button class"rightbtn bottomBtnCss" catch:tap"canvasImg"><image src{{imgUrl}}/images/mine/jspj-icon.png class"restNumImg"></image><text class"btnText">生成图片</text></but…...
设计模式8:代理模式-动态代理
上一篇:设计模式8:代理模式-静态代理 目录 如何理解“动态”这两个字?动态代理简单的代码实例一个InvocationHandler代理多个接口有动态代理,为什么还要用Cglib代理? 如何理解“动态”这两个字? “动态”…...
tcp字节传输(java)-自定义包头和数据识别
1、背景 tcp传输的时候会自动拆包,因此服务端接收的数据段可能跟客户端发送过来的数据段长度不一致,比如客户端一次发送10000个字节。但是服务端接收了两次才接收完整(例如第一次接收6000字节,第二次接收4000字节)。但…...
pyspark 系统找不到指定的路径; \Java\jdk1.8.0_172\bin\java
使用用具PyCharm 2023.2.1 1:pyspark 系统找不到指定的路径, Java not found and JAVA_HOME environment variable is not set. Install Java and set JAVA_HOME to point to the Java installation directory. 解决方法:配置正确环境变量…...
UE4 Physics Constraint Actor 实现钟摆效果
放入场景,然后将一个球体放入场景 选择小球 将小球改为Movable 选择模拟物理,并将小球移除平衡点 就实现了...
UE4/UE5 动画控制
工程下载 https://mbd.pub/o/bread/ZJ2cm5pu 蓝图控制sequence播放/倒播动画: 设置开启鼠标指针,开启鼠标事件 在场景中进行过场动画制作 设置控制事件...
Springboot整合shiro
导入依赖 <!-- 引入springboot的web项目的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> <!-- shiro --><depende…...
阻塞/非阻塞、同步/异步(网络IO)
1.阻塞/非阻塞、同步/异步(网络IO) 【思考】典型的一次 IO 的两个阶段是什么? 数据就绪 和 数据读写 数据就绪 :根据系统 IO 操作的就绪状态 阻塞 非阻塞 数据读写 :根据应用程序和内核的交互方式 同步 异步 陈硕:在处理 IO …...
为什么大家会觉得考PMP没用?
一是在于PMP这套知识体系,是一套底层的项目管理逻辑框架,整体是比较抽象的。大家在学习工作之后,会有人告诉你很多职场的一些做事的规则,比如说对于沟通,有人就会告诉如何跟客户沟通跟同事相处等等,这其实就…...
AVR128单片机 USART通信控制发光二极管显示
一、系统方案 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void port_init(void) { PORTA 0xFF; DDRA 0x00;//输入 PORTB 0xFF;//低电平 DDRB 0x00;//输入 PORTC 0xFF;//低电平 DDRC 0xFF;//输出 PORTE 0xFF; DDRE 0xfE;//输出 PO…...
为什么5G 要分离 CU 和DU?(4G分离RRU 和BBU)
在 Blog 一文中,5G--BBU RRU 如何演化到 CU DU?_5g rru_qq_38480311的博客-CSDN博客 解释了4G的RRU BBU 以及 5G CU DU AAU,主要是讲了它们分别是什么。但是没有讲清楚 为什么,此篇主要回答why。 4G 为什么分离基站为 RRU 和 BBU…...
Python中的数据输入
获取键盘输入 input语句 使用input()可以从键盘获取输入,使用一个变量来接收 print("你是谁?") name input() print(f"我知道了,你是{name}")# print("你是谁?") name input("你是谁&…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
