web刷题记录(2)

[鹤城杯 2021]EasyP

就是php的代码审计

从中可以看出来,就是对四个if语句的绕过,然后过滤了一些语句

代码分析:

        通过include 'utils.php';导入了一个叫做"utils.php"的文件,这意味着在该文件中可能定义了一些与本代码相关的函数和变量。

        然后,代码检查了是否有通过POST请求发送的"guess"参数。如果有的话,它将把该参数的值转换成字符串,并存储在变量$guess中。

        代码用条件判断语句检查用户猜测的guess是否等于一个名为secret的变量。如果相等,说明用户猜对了密码,就将一个包含flag的消息赋值给message变量。否则,说明用户猜错了密码,就将一个"Wrong. Try Again"的消息赋值给message变量。

        代码的下一部分用正则表达式检查了当前PHP脚本文件的路径名是否以"utils.php"后面紧跟着零或多个斜杠(/)结尾。如果是的话,代码会退出并显示"hacker :)"。

        紧接着,代码通过正则表达式检查了当前请求的URL(即$_SERVER['REQUEST_URI'])中是否包含"show_source"字符串。如果是的话,代码也会退出并显示"hacker :)"。

        然后,代码检查了是否有通过GET请求发送的"show_source"参数。如果有的话,它会使用highlight_file函数来显示当前PHP脚本文件(通过basename($_SERVER['PHP_SELF'])获取)的源代码,并退出。

        最后,如果前面的条件都不满足,代码将通过show_source函数显示当前PHP脚本文件的源代码,即__FILE__的内容。

        这里比较迷惑的一个点就是,好像可以通过对第一个if判断语句的绕过就可以直接得到flag,但是它这里要爆破密码,因为要使两个变量值相等,这里就是第一个思路,但是这样的话,后面的各种正则就没什么用了,所以我估计这个密码大概率是爆破不出来的,但是作为思路还是先试一试。

        试了两个字典,没有用,估计应该是爆破不出来

        换思路,再仔细的对后面几个正则再次理解,进行绕过。

        关于正则的话:

        表达式/\/utils\.php\/?$/i可以用来匹配以/utils.php结尾的URL路径,解释一下各个部分:

    /:正则表达式的开始标记。
    \/:匹配斜杠字符/。由于斜杠在正则表达式中有特殊含义,需要使用反斜杠进行转义。
    utils\.php:匹配字符串utils.php。由于.在正则表达式中有特殊含义,需要使用反斜杠进行转义。
    \/?:匹配可选的斜杠字符/。?表示前面的字符或组是可选的。
    $:匹配字符串的结尾。
    /i:正则表达式的结束标记,表示不区分大小写。

        看了好久,这里主要就是对两个知识点的运用:

一.['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']

1.$_SERVER['PHP_SELF']:获取当前执行脚本的文件名(相对于网站根目录的路径及 PHP 程序名称。)

2.$_SERVER['SCRIPT_NAME']:获取相对于网站根目录的路径及 PHP 程序文件名称。

3.$_SERVER['REQUEST_URI']:获取当前URL的 路径地址。

举个栗子:(方便理解)

http://www.baidu.com/php/flag.php/flag?a=11111

        执行$_SERVER['PHP_SELF'] 得到:/php/flag.php/flag

        执行$_SERVER['SCRIPT_NAME'] 得到:/php/flag.php

        执行$_SERVER['REQUEST_URI'] 得到:/php/flag.php/flag?a=11111

如果以本题为例子的话,实际上,这里用到这些函数的作用,是给了我们一个路径 ,大概让我们知道,跟flag有关的信息应该在哪个位置,要怎么找,这里涉及了解题的第一步,就是对路径的构造。

二.basename()

php basename()函数语法

作用:返回路径中的文件名部分。

语法:basename(path,suffix)

参数:

path 必需。规定要检查的路径。

suffix 可选。规定文件扩展名。如果文件有 suffix,则不会输出这个扩展名。

说明:

返回路径中的文件名部分。

举个栗子:

<?php

$file = "/phpstudy/WWW/index.php";

echo basename($file);//带有文件扩展名

echo "
";

echo basename($file,'.php'); //去除文件扩展名

?>

输出:index.php

           index

        简单而言,bashname命令用于获取路径中的文件名或路径名。有一个师姐说的也是挺经典(basename():删除从最后一个斜杠之前的所有内容 ),简单粗暴。

然后这个函数得漏洞所在就是,basename()无法处理非ascii字符,如果传入的参数中出现了非ascii字符则会把它给丢弃。

        然后呢,这里还涉及了一个魔术常量的问题,这里一并介绍吧。

        __FILE__是一个魔术常量,它包含当前脚本的完整路径和文件名。

最后呢,就还有一个过滤没有处理,就是GTE传参的show_source

 这里要考虑绕过一个正则,作为补充知识点:

[ ,(空格) ,+ , . 这四个都可以被处理为_

构造payload

/utils.php/朱?show.source=1

出不来,考虑是不是路径出问题了,加个index.php试试 解出了flag(吐槽一下,这个位数的密码,要爆破怕至少两个星期,勾石)

[LitCTF 2023]Vim yyds

既然题目说,和vim泄露有关,那么按我的思路是,先用dirsearch扫一下看看(因为源代码里面没有什么有用的信息,就一个图片引用的超链接)

扫到一个可能有用的文件

访问一下看看

王德发??????(跟火绒斗智斗勇以后,我决定还是先关掉它)

虽然用记事本好像大概也能看,但是,还是正式点看看吧

 这里就涉及知识点了,

vim信息泄露知识点:

vim 交换文件名

在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn

         在kali里面可以恢复这个文件

vim -r index.php.swp

这里恢复以后会另外存储

然后再访问就可以查看文件内容了(这里只截取有用的部分)

         这里大概的意思就是有两个绕过,一个base64,一个OS命令执行,然后以POST传参的方式

 然后post传参,得到flag,这里的tac和cat的作用是一样的,但是我就是想写tac

[NSSCTF 2022 Spring Recruit]babyphp 

还是代码审计

  • if(isset($_POST['a'])&&!preg_match('/[0-9]/',$_POST['a'])&&intval($_POST['a'])): 这是一个条件判断语句,检查是否存在名为"a"的POST参数,且该参数的值不包含数字(通过正则表达式检查),并且转换为整数后不为0。

  • 在上述条件满足的情况下,进入嵌套的条件判断:

    a. if(isset($_POST['b1'])&&$_POST['b2']): 检查是否存在名为"b1"和"b2"的POST参数。

    b. if($_POST['b1']!=$_POST['b2']&&md5($_POST['b1'])===md5($_POST['b2'])): 检查"b1"和"b2"的值是否不相等,并且它们的MD5哈希值是否相等。

    c. 在上述条件满足的情况下,进入另一个嵌套的条件判断:

    • if($_POST['c1']!=$_POST['c2']&&is_string($_POST['c1'])&&is_string($_POST['c2'])&&md5($_POST['c1'])==md5($_POST['c2'])): 检查"c1"和"c2"的值是否不相等,并且它们是字符串类型,并且它们的MD5哈希值是否相等。

      • 如果上述条件都满足,则输出flag。

      • 否则,输出"yee"。

      • 如果"b1"和"b2"的MD5哈希值不相等,则输出"nop"。

    d. 如果"b1"和"b2"的值相等,则输出"go on"。

        大概意思呢,就是数组绕过,然后0e绕过,我的理解大概就是这样,关于MD5,我已经做过详解,有兴趣观看关于MD5-CSDN博客

成功构造以后,得到了flag

 

[HNCTF 2022 Week1]Interesting_include

开局源码,而且给了提示,就是伪协议,但是要绕正则

payload

?filter=php://filter/read=convert.base64-encode/resource=./flag.php

解码,得到flag

[GDOUCTF 2023]EZ WEB 

开始就是一个超链接,但是没什么用,看看源码

也没用,就是给了有一个src文件,访问一下看看

下载了一个python

 

这是一个使用 Flask 框架编写的简单 Web 应用程序,它定义了三个路由:

    '/' - GET 请求会返回名为 'index.html' 的文件;
    '/src' - GET 请求会返回名为 'app.py' 的文件;
    '/super-secret-route-nobody-will-guess' - 只接受 PUT 请求,会返回名为 'flag' 的文件内容。

其中 '/super-secret-route-nobody-will-guess' 路由返回的内容可能是敏感信息

然后这里涉及的方法是put传参

PUT(书上找的)

        put方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将会用此请求中的数据替换原先的数据,作为指定资源的最新修改版。如果请求指定的资源不存在,将会创建这个资源。

要详细的话,这个大佬讲的很好PUT和POST方法的区别-比较POST和PUT方法-CSDN博客

        这里的话根据这个程序源码可知,要求就是是PUT方式下访问/super-secret-route-nobody-will-guess,可以def flag():

        这里使用bp抓包修改

成功得到flag

[GDOUCTF 2023]hate eat snake

打开就是个游戏,我靠,这个速度,后面牛逼到离谱,玩了两把,该找flag了

审了一下,直接找到flag是不可能了,搓了半天,应该是搓到关键信息了

60就60,还整起表达式来了

这个弹窗,好像直接查看是做不到了(反正我是做不到),根据它的条件,传个代码调试台执行试试

        得到flag

[HNCTF 2022 Week1]2048

还是审代码

为了满足条件判断,这里两种方法,一种是直接传入score的值,一种是直接在控制台执行弹窗命令

得到了flag

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通信协议:常见的芯片间通信协议

相关阅读 通信协议https://blog.csdn.net/weixin_45791458/category_12452508.html?spm1001.2014.3001.5482 本文将简单介绍一些常见的芯片间通信协议&#xff0c;但不会涉及到协议的具体细节。首先说明&#xff0c;芯片间通信方式根据通信时钟的区别可以分为&#xff1a;异步…

计算机网络ppt和课后题总结(上)

试在下列条件下比较电路交换和分组交换。要传送的报文共 x(bit)。从源点到终点共经过 k 段链路&#xff0c;每段链路的传播时延为 d(s)&#xff0c;数据率为 b(b/s)。在电路交换时电路的建立时间为 s(s)。在分组交换时分组长度为 p(bit)&#xff0c;且各结点的排队等待时间可忽…

基于YOLOv7的口罩检测

目录 1. 作者介绍2. YOLOv7网络模型2.1 算法简介2.2 数据集介绍2.3 YOLO格式数据集制作 3. 代码实现3.1 分割数据集3.2 修改数据配置文件3.3 修改训练代码&#xff0c;进行训练3.4 修改测试代码&#xff0c;进行测试3.5 检测结果 1. 作者介绍 曹宇欢&#xff0c;女&#xff0c…

跨越国界, 纷享销客助力企业全球业务增长

出海&#xff0c;已不再是企业的“备胎”&#xff0c;而是必须面对的“大考”&#xff01;在这个全球化的大潮中&#xff0c;有的企业乘风破浪&#xff0c;勇攀高峰&#xff0c;也有的企业在异国他乡遭遇了“水土不服”。 面对“要么出海&#xff0c;要么出局”的抉择&#xff…

盲盒风尚:拆盒吧引领新潮消费趋势

在当下这个快速变化的消费时代&#xff0c;拆盒吧以其独特的盲盒经济模式&#xff0c;成为了新潮文化消费的引领者。不同于传统的购物方式&#xff0c;拆盒吧通过创新的玩法和多元化的产品线&#xff0c;为消费者带来了前所未有的购物体验。 一、拆盒吧&#xff1a;解锁盲盒新玩…

现代密码学-国密算法

商用密码算法种类 商用密码算法 密码学概念、协议与算法之间的依赖关系 数字签名、证书-公钥密码、散列类算法 消息验证码-对称密码 &#xff0c;散列类 安全目标与算法之间的关系 机密性--对称密码、公钥密码 完整性--散列类算法 可用性--散列类、公钥密码 真实性--公…

数据结构之初始泛型

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 深入了解包装类 包装类的由来 装箱与拆箱 面试题 泛型 泛型的语法与使用…

可长期操作的赚钱项目,时间自由,但不适合大学生

如何评价现在的csgo市场&#xff1f; 可长期操作的赚钱项目&#xff0c;时间自由&#xff0c;但不适合大学生。 都在问&#xff0c;有哪些可以长期做下去的赚钱项目&#xff0c;童话就不拐弯抹角了&#xff0c;csgo/steam游戏搬砖一定是最适合长期做下去的赚钱项目。 不说别人…

CondaSSLError: OpenSSL appears to be unavailable on this machine.

conda create -n x1 python3.7报错 PS C:\Users\Richardo.M.Song\Desktop\lele_seg\x1> conda create -n x1 python3.7 Collecting package metadata (current_repodata.json): failed CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is requ…

Varnish讲解文章、缓存代理配置、核心功能、优势、Varnish在什么情况下会选择缓存哪些类型的内容、Varnish如何实现负载均衡功能?

varnish官网链接 Varnish文章概览 Varnish是一款高性能的HTTP加速器&#xff08;web应用加速器&#xff09;&#xff0c;是一款开源软件&#xff0c;它能够显著提高网站的响应速度和减少服务器的负载。Varnish的设计理念是利用缓存技术&#xff0c;将频繁访问的静态内容存储在…

【Python】 探索Pytz库中的时区列表

基本原理 在Python中&#xff0c;处理时区是一个常见但复杂的问题。pytz是一个Python库&#xff0c;它提供了对时区的精确和丰富的支持。pytz库是datetime模块的补充&#xff0c;它允许更准确地处理时区信息。pytz库包括了IANA时区数据库&#xff0c;这个数据库包含了全球的时…

13-至少有5名直接下属的经理(高频 SQL 50 题基础版)

13-至少有5名直接下属的经理 select name from Employee where id in (select managerId -- 查找大于5的经理idfrom Employeegroup by managerId -- 根据id分组having count(*)>5); -- 根据分组的数据进行求个数

小白级教程—安装Ubuntu 20.04 LTS服务器

下载 本教程将使用20.04版进行教学 由于官方速度可能有点慢&#xff0c;可以下方的使用清华镜像下载 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ 点击20.24版本 选择 ubuntu-20.04.6-live-server-amd64.iso 新建虚拟机 下载好后 我们使用 VMware 打开它 这里选…

使用Python和wxPython将PNG文件转换为JPEG文件

简介&#xff1a; 在图像处理中&#xff0c;有时候我们需要将PNG格式的图像文件转换为JPEG格式。本篇博客将介绍如何使用Python编程语言和wxPython图形用户界面库&#xff0c;以及Pillow图像处理库来实现这一转换过程。通过本文的指导&#xff0c;您将学习如何快速将指定文件夹…

Docker run 命令常用参数详解

Docker run 命令提供了丰富的参数选项&#xff0c;用于配置容器的各种设置。以下是docker run命令的主要参数详解&#xff0c; 主要参数详解 后台运行与前台交互 -d, --detach: 在后台运行容器&#xff0c;并返回容器ID。-it: 分配一个伪终端&#xff08;pseudo-TTY&#xff0…

路由策略案例

一、路由策略案例 如图所示&#xff0c;某公司内终端通过Switch接入公司内部网络。如果该公司内存在非如图1所示&#xff0c;运行OSPF协议的网络中&#xff0c;RouterA从Internet网络接收路由&#xff0c;并头RouterB提供了部分Internet路由。其中: RouterA仅提供172.1…

Unity DOTS技术(五)Archetype,Chunk,NativeArray

文章目录 一.Chunk和Archetype什么是Chunk?什么是ArchType 二.Archetype创建1.创建实体2.创建并添加组件3.批量创建 三.多线程数组NativeArray 本次介绍的内容如下: 一.Chunk和Archetype 什么是Chunk? Chunk是一个空间,ECS系统会将相同类型的实体放在Chunk中.当一个Chunk…

蓝桥杯物联网竞赛_STM32L071_20_用printf将数据显示在OLED上

需求&#xff1a; 第十五届国赛确实有点变态&#xff0c;显示部分大概有6个所以需要大量将sprintf与OLED_ShowString配合使用才能显示相应格式的数据&#xff0c;所以我在想能不能简化一下这一部分直接用写好的printf语句将数据显示到显示屏上呢&#xff1f; 代码&#xff1a…

重学java 61.IO流 字节流 ② 字节输出流

夜色难免黑凉&#xff0c;前行必有曙光 —— 24.6.4 一、I0流介绍以及输入输出以及流向的介绍 1.单词: output:输出 Input:输入 write:写数据 read:读数据 2.IO流: 将一个设备上的数据传输到另外一个设备上,称之为IO流技术 3.为什么要学IO流? 之前学了…

树的知识总结

一:树的基本术语(只写了查漏的部分 1 双亲:就是父节点 2 层序编号 3 有序无序树 4 森林 二:逻辑结构上与线性结构的比较 三:树的存储结构 ①双亲表示节点法: