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.mzph.cn/news/75042.shtml

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

相关文章

有哪些适合初学者的编程语言?

C语言 那为什么我还要教你C语言呢&#xff1f;因为我想要让你成为一个更好、更强大的程序员。如果你要变得更好&#xff0c;C语言是一个极佳的选择&#xff0c;其原因有二。首先&#xff0c;C语言缺乏任何现代的安全功能&#xff0c;这意味着你必须更为警惕&#xff0c;时刻了…

Json“牵手”易贝商品详情数据方法,易贝商品详情API接口,易贝API申请指南

易贝是一个可让全球民众在网上买卖物品的线上拍卖及购物网站&#xff0c;易贝&#xff08;EBAY&#xff09;于1995年9月4日由Pierre Omidyar以Auctionweb的名称创立于加利福尼亚州圣荷塞。人们可以在易贝上通过网络出售商品。2014年2月20日&#xff0c;易贝宣布收购3D虚拟试衣公…

Knowledge Graph Prompting for Multi-Document Question Answering

本文是LLM系列文章&#xff0c;针对《Knowledge Graph Prompting for Multi-Document Question Answering》的翻译。 多文档问答中的知识图谱提示 摘要1 引言2 符号3 知识图谱构建4 LM引导的图形遍历器5 实验6 相关工作7 结论 摘要 大型语言模型的“预训练、提示、预测”范式…

layui 富文本编辑器layedit 以及 图片转base64前端页面显示

js var index layui.layedit.build(noticeInformationContent, {area: [500px, 400px],uploadImage: {url: NI/uploadconimage //接口url, type: POST //默认post},hideTool: [image]});layui.form.verify({content: function (val) {layui.layedit.sync(index);var content …

前端面试的话术集锦第 7 篇:高频考点(浏览器渲染原理 安全防范)

这是记录前端面试的话术集锦第七篇博文——高频考点(浏览器渲染原理 & 安全防范),我会不断更新该博文。❗❗❗ 1. 浏览器渲染原理 注意:该章节都是⼀个⾯试题。 1.1 渲染过程 1.1.1 浏览器接收到HTML⽂件并转换为DOM树 当我们打开⼀个⽹⻚时,浏览器都会去请求对应的…

各种UI库使用总结

各种UI库使用总结 工作了这么年&#xff0c;使用了一些UI库&#xff0c;简单的总结一下&#xff0c;UI库也是五花八门&#xff0c;根据自己的产品&#xff0c;应用场景吧&#xff0c;没有绝对合适的&#xff0c;各有各的应用场景吧&#xff01; QT 这几年前后在一些嵌入式上…

LeetCode 630. Course Schedule III【反悔贪心,堆,排序】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Progresql数据库安装--安装

--安装progresql数据库 systemctl disable firewalld systemctl status firewalld systemctl stop firewalld --准备工作 yum install epel-release.noarch -y yum install libzstd.x86_64 -y # Install the repository RPM: s sudo yum install -y https://download.postgresq…

SpringMVC的简介及工作流程

一.简介 Spring MVC是一个基于Java的开发框架&#xff0c;用于构建灵活且功能强大的Web应用程序。它是Spring Framework的一部分&#xff0c;提供了一种模型-视图-控制器&#xff08;Model-View-Controller&#xff0c;MVC&#xff09;的设计模式&#xff0c;用于组织和管理Web…

MATLAB中isoutlier函数用法

目录 语法 说明 示例 检测向量中的离群值 使用均值检测方法 使用移窗检测法 检测矩阵中的离群值 可视化离群值阈值 isoutlier函数的功能是查找数据中的离群值 语法 TF isoutlier(A) TF isoutlier(A,method) TF isoutlier(A,"percentiles",threshold) TF…

你们分库分表使用什么中间件,有什么优点和缺点?

分析&回答 根据自己的实际使用来说&#xff1a; cobar 阿里 b2b 团队开发和开源的&#xff0c;属于 proxy 层方案。早些年还可以用&#xff0c;但是最近几年都没更新了&#xff0c;基本没啥人用&#xff0c;差不多算是被抛弃的状态吧。而且不支持读写分离、存储过程、跨…

【React】React学习:从初级到高级(四)

React学习[四] 4 应急方案4.1 使用ref引用值4.1.1 给组件添加ref4.1.2 ref和state的不同之处4.1.3 何时使用ref 4.2 使用ref操作DOM4.2.1 获取指向节点的ref4.2.3 使用 ref 回调管理 ref 列表4.2.4 访问另一个组件的DOM节点4.2.5 用 flushSync 同步更新 state 4.3 使用Effect同…

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…

01 PHP基础知识讲解

一 php基础知识 PHP文件的默认拓展名是“php”。 PHP文件中包含HTML标记、PHP标记、PHP代码以及空格和注释。 PHP标记&#xff1a;开始标记<?php 结束标记 ?> 中间内容是PHP代码。 PHP代码&#xff1a;学习第一个指令 echo 功能是用于输出字符串 。 语句结束符&a…

Kotlin+MVVM 构建todo App 应用

作者&#xff1a;易科 项目介绍 使用KotlinMVVM实现的todo app&#xff0c;功能界面参考微软的Todo软件&#xff08;只实现了核心功能&#xff0c;部分功能未实现&#xff09;。 功能模块介绍 项目模块&#xff1a;添加/删除项目&#xff0c;项目负责管理todo任务任务模块&a…

信息化发展29

虚拟现实概述 建立一个能包容图像、声音、化学气味等多种信息源的信息空间&#xff0c; 将其与视觉、听觉、嗅觉、口令、手势等人类的生活空间交叉融&#xff0c; 虚拟现实的技术应运而生。 1 、虚拟现实技术的主要特征包括沉浸性、交互性、多感知性、构想性&#xff08;也称想…

时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化

时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化 目录 时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MVMD多元变分模态分解 可直接替换Excel运行包含频谱相关系数图 Matlab语言 1.算法新颖小众&…

Matlab之数组字符串函数汇总

一、前言 在MATLAB中&#xff0c;数组字符串是指由字符组成的一维数组。字符串可以包含字母、数字、标点符号和空格等字符。MATLAB提供了一些函数和操作符来创建、访问和操作字符串数组。 二、字符串数组具体怎么使用&#xff1f; 1、使用单引号或双引号括起来的字符序列 例…

数据结构 - 双向链表

文章目录 目录 文章目录 前言 一、什么是双向链表? 双向链表有什么优势? 二、双向链表的设计和实现 1.设计思想 尾增 : 在链表的末尾添加新的元素 头插 : 在链表头部插入节点 删除 : 根据val的值删除节点 查找 : 根据索引的值查找并返回节点 总结 前言 大家好,今天给…

Linux TCP和UDP协议

目录 TCP协议TCP协议的面向连接1.三次握手2.四次挥手 TCP协议的可靠性1.TCP状态转移——TIME_WAIT 状态TIME_WAIT 状态存在的意义&#xff1a;&#xff08;1&#xff09;可靠的终止TCP连接。&#xff08;2&#xff09;让迟来的TCP报文有足够的时间被识别并被丢弃。 2.应答确认、…