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命令后可跟管道符,管道符的用法。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写Spring:第11章-容器事件和事件监听器

文章目录 一、目标&#xff1a;容器事件和事件监听器二、设计&#xff1a;容器事件和事件监听器三、实现&#xff1a;容器事件和事件监听器3.1 工程结构3.2 容器事件和事件监听器类图3.3 定义和实现事件3.3.1 定义事件抽象类3.3.2 定义应用上下文事件实现类3.3.3 上下文刷新事件…

视频导出文件太大如何变小?缩小视频这样做

作为一名视频制作爱好者&#xff0c;我们经常需要导出视频文件&#xff0c;但是&#xff0c;有时候我们会发现导出的视频文件太大&#xff0c;给上传和分享带来很大的不便。那么&#xff0c;如何将视频文件变小呢&#xff1f;下面将为你介绍三个方法&#xff0c;让你轻松解决视…

20个经典巧妙电路合集

1、防反接保护&#xff08;二极管&#xff09; 在实际电子设计中&#xff0c;防反接保护电路非常重要&#xff0c;不要觉得自己肯定不会接错&#xff0c;实际上无论多么小心&#xff0c;还是会犯错误...... 最简单的就是利用二极管了&#xff0c;利用二极管的单向导电性&#…

ESP32用作经典蓝牙串口透传模块与手机进行串口通信

ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙&#xff08;BR/EDR&#xff09;、低功耗蓝牙&#xff08;BLE&#xff09;和 Wi-Fi&#xff0c;具…

核心实验12合集_vlan高级配置:基于子网划分vlan超级vlan相同vlan 端口隔离 _ENSP

项目场景一&#xff1a; 核心实验12合集-1_vlan高级配置_ENSP 基于子网划分vlan &#xff11; 当检测ip在192.168.10.0/24时候&#xff0c;PC接入交换机时&#xff0c;将其划为vlan10&#xff0c; 且可以和vlan 10 的服务器通信。 2 当检测ip在192.168.20.0/24时候&#xff0c;…

设备管理系统有什么功能?它有什么用?

设备管理系统已成为现代化大规模研究所&#xff0c;信息化管理体系建设中最为关键的要素。随着工业设备的机械化、自动化、大型化、高速化以及复杂化等因素不断叠加&#xff0c;设备设施对于工业生产的作用和影响越来越大&#xff0c;其各项制度和流程也涉及面广、内容繁杂。  …

rrweb入门

rrweb 背景 rrweb 是 record and replay the web&#xff0c;是当下很流行的一个录制屏幕的开源库。与我们传统认知的录屏方式&#xff08;如 WebRTC&#xff09;不同的是&#xff0c;rrweb 录制的不是真正的视频流&#xff0c;而是一个记录页面 DOM 变化的 JSON 数组&#x…

Ab3d.DXEngine 6.0 Crack 2023

Ab3d.DXEngine 不是另一个游戏引擎&#xff08;如Unity&#xff09;&#xff0c;它强迫您使用其游戏编辑器、其架构&#xff0c;并且需要许多技巧和窍门才能在标准 .Net 应用程序中使用。Ab3d.DXEngine 是一个新的渲染引擎&#xff0c;它是从头开始构建的&#xff0c;旨在用于标…

mysql之DML的select分组排序

目录 一、创建表employee和department表 1.创建department表 2.创建employee表 3.给employee表格和department表格建立外键 4.给department插入数据 5.给employee表插入数据 6.删除名字为那个的数据 二、分组查询和排序查询&#xff0c;以及对数据的处理&#xff08;av…

controller接口上带@PreAuthorize的注解如何访问 (postman请求示例)

1. 访问接口 /*** 查询时段列表*/RateLimiter(time 10,count 10)ApiOperation("查询时段列表")PreAuthorize("ss.hasPermi(ls/sy:time:list)")GetMapping("/list")public TableDataInfo list(LsTime lsTime){startPage();List<LsTime> l…

ARM DIY(九)陀螺仪调试

前言 今天调试六轴陀螺仪 MPU6050 硬件 硬件很简单&#xff0c;使用 I2C 接口&#xff0c;并且没有使用中断引脚。 焊接上 MPU6050 芯片和上拉电阻、滤波电容。 检测 MPU6050 是挂在 I2C-0 上的&#xff0c;I2C-0 控制器的驱动已 OK&#xff0c;所以直接使用 I2C-0 检测 …

神经网络中的一些优化器整理

6 梯度平方的指数移动平均在神经网络优化中具有以下好处&#xff1a; 自适应学习率&#xff1a;梯度平方的指数移动平均允许每个参数的学习率自适应地调整。如果某个参数的梯度平方历史信息较大&#xff0c;那么其指数移动平均值会较大&#xff0c;从而减小学习率&#xff0c;使…