php 系列题目,包含查看后端源代码

news2024/10/7 12:24:28

一、弱类型比较问题

原则:

1.字符串和数字比较,字符串回被转换成数字。

"admin" ==0(true)

admin被转换成数字,由于admin是字符串,转换失败,变成0

int(admin)=0,所以比较结果是ture

2.混合字符串转换成数字,看字符串的第一个

“1admin” == 1 ‘’2admin“ == 2 

3.字符串开头以xex开头,x代表数字。会被转换成科学计数法

1e9  => 1x10^9

例题一

GIVE ME THE MONEY!!!
 
<?php
 
    include "flag.php";
 
    highlight_file(__FILE__);
 
  
 
    if (isset($_GET['money'])) {
 
        $money=$_GET['money'];
 
        if(strlen($money)<=4&&$money>time()&&!is_array($money))
 
        {
 
            echo $flag;
 
        }
 
        else echo "Wrong Answer!";
 
    }
 
    else echo "Wrong Answer!";
 
?>

使用到第三个原则,输入参数为四个字节,含有字母e分隔的字符串,设置数值比较大,就可以大过time()时间戳

例题二,经典的0e绕过MD5

<!DOCTYPE html>
<!--html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head>
<body>
<?php
 
    $flag="ctf{YOU_4re_DO1ng_GREAT!}";
     
    if (isset($_GET['a'])&&isset($_GET['b'])) {
        $a=$_GET['a'];
        $b=$_GET['b'];
 
 
        if($a==$b) 
        {
            echo "<center>Wrong Answer!</center>";
        }
        else {
            if(md5($a)==md5($b)) 
            {
                echo "<center>".$flag."</center>"; 
            }
            else echo "<center>Wrong Answer!</center>";
        }
         
    }
    else echo "NONONO"; 
?>
</body>
</html-->

题目要求输入的两个参数a、b满足条件1:a!=b同时满足条件条件2:MD5(a)==MD5(b)

MD5加密的特点是,输入的明文不同,输出的结果必然不同

为了同时实现条件1和条件2,这种极端环境下就要用到弱类型比较问题的三个原则

分析MD5加密,它输出的格式是16进制格式的(输出的元素只有0-9和a-f)

在a-f范围内有个特殊的字符e存在 ,所以用到三原则中的第三个原则

等号比较的两边有xex格式的,都当作科学计数法形式来比较

 输入两个0e开头不相同的字符串,就可以同时满足两个条件

二、数组类型参数绕过

  • 许多函数的参数输入并非数组
  • 强行输入数组会返回特殊结果

传入参数为数组类型,函数返回结果为NULL

例题

 输入参数为三个不同的数组

md5($v1)==md5($v2)   =>null==null

strcmp()函数比较两字符串是否相同,相同返回0,不相同返回1

v3强行输入数组形式,函数返回值为null,加!变为ture

通常出现strcmp()函数都使用数组绕过,还有就是针对字符串操作的函数

三、传参允许是空值,并实现绕过

<?php
 
include("extract_flag.php");
extract($_GET); 
if(isset($aurora))
{ 
    $content=trim(file_get_contents($flag)); 
 
    if($aurora==$content)
     {
        echo $flag; 
    } 
else { echo'Oh.no'; } }?>
  •  extract函数 :讲传入的数组,转换为变量名和变量值的声明,例如输入的get参数是a=1&b=2经过该函数作用了,就多了两个变量$a=1,$b=2。作用类似于n个$_GET(a)语句
  • file get contents():传入参数为文件名,函数将传入文件的内容读取出来
  • trim():去除字符串首尾的空格

本题是在考验我们是否已经知道了服务器上的某个文件的内容,就是参数aurora值传已知文件的内容,$flag传文件名,就能得到flag

但是问题在于不知道某个文件的内容

解决办法是传空值绕过,传空值不是没传值isset()是可以满足的

aurora&flag

四、%00绕过

php底层的解析器是由c语言实现的,在c语言表达字符串的终结是'\0',在php中是‘%00’

某些函数不过没有对‘%00’进行特殊处理,就存在着可能绕过的空间

ereg就是这样的函数,当输入123%00到ereg函数中,遇到%00就认为字符串终结,不再判断直接符合条件,返回ture

<?php
 
include("strpos_flag.php");
if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
echo 'You password must be alphanumeric';
else if (strpos ($_GET['password'], '--') !== FALSE)
die('Flag: ' . $flag);
else
echo 'Invalid password';}?>
  • strpos():实现字符串的字符查找是否存在
  • ereg():正则表达式的匹配,ereg ("^[a-zA-Z0-9]+$"$_GET['password']只允许包含【】内的字符

获取后端源代码的方法 

1.后端源码会以注释形式展示在前端源代码中

  • 右键查看前端页面源代码
  • 地址栏中后跟/.index.php~,会自动下载页面源码

2.由于电脑或vim编辑器非正常退出,会保留交换文件,后端源码就保存在交换文件中

例题:

 题目提示说电脑会自动关机,电脑自动关机说明文本编辑器肯定会非正常退出,就会留下交换文件

在地址栏中后跟/.index.php.swp

就会自动下载交换文件

 文件内的内容就包含后端源代码

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

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

相关文章

opencv 进阶17-使用K最近邻和比率检验过滤匹配(图像匹配)

K最近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;和比率检验&#xff08;Ratio Test&#xff09;是在计算机视觉中用于特征匹配的常见技术。它们通常与特征描述子&#xff08;例如SIFT、SURF、ORB等&#xff09;一起使用&#xff0c;以在图像中找到相似…

【C#学习笔记】匿名函数和lambda表达式

文章目录 匿名函数匿名函数的定义匿名函数作为参数传递匿名函数的缺点 lambda表达式什么是lambda表达式闭包 匿名函数 为什么我们要使用匿名函数&#xff1f;匿名函数存在的意义是为了简化一些函数的定义&#xff0c;特别是那些定义了之后只会被调用一次的函数&#xff0c;与其…

【Unity3D赛车游戏制作】初步导入,资源很哇塞【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

位运算相关总结

371. 两整数之和 给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - ​​​​​​​&#xff0c;计算并返回两整数之和。 class Solution { public:int getSum(int a, int b) {while (b ! 0) {// 计算进位&#xff1a;将 a 和 b 进行位与操作&#xff0c;然后左移 1 位。u…

ExoPlayer如何使用MediaExtractor的思路

本文主要针对于&#xff0c;自己的设备解码能力&#xff08;比如底层集成ffmpeg 、qti、android 、需要付费的格式等等&#xff09;大于ExoPlayer自己封装的固有Extractor&#xff0c;基于现在Android架构通俗的来说&#xff0c;就是MediaPlayer可以播&#xff0c;但是ExoPlaye…

解码客厅:知名设计师带你探索其历史与设计风格

会客厅又称接待室&#xff0c;&#xff0c;它们是宾客和家人享受下午或晚上娱乐时光的天然聚会场所。由于会客厅反映了每个家庭的个性&#xff0c;因此在家具和设计上花费了很多心思。装饰品、复古艺术品、三角钢琴以及雕塑和花瓶等其他装饰元素在今天的会客厅中已司空见惯。 下…

UE4 地形编辑基础知识 学习笔记

之前自己写过这样的功能&#xff0c;今天看到一个UE现成的 点击地形&#xff0c;选择样条 按住CTRL键点击屏幕中某一个点会在场景内生成一个这样的图标 再点两次&#xff0c;会生成B样条的绿线条 点击号再选择一个模型&#xff0c;会生成对应的链条状的mesh 拉高最远处的一个图…

2023国赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

无涯教程-PHP - preg_split()函数

preg_split() - 语法 array preg_split (string pattern, string string [, int limit [, int flags]]); preg_split()函数的操作与split()完全相同&#xff0c;只不过正则表达式被接受为pattern的输入参数。 如果指定了可选的输入参数limit&#xff0c;则仅返回子字符串的限…

测试框架pytest教程(11)-pytestAPI

常量 pytest.__version__ #输出pytest版本 pytest.version_tuple #输出版本的元组形式 功能 pytest.approx pytest.approx 是一个用于进行数值近似比较的 pytest 断言工具。 在测试中&#xff0c;有时候需要对浮点数或其他具有小数部分的数值进行比较。然而&#xff0c;由于…

正中优配:散户也算股东吗?能不能参加股东大会?

股市上&#xff0c;常有散户自称韭菜&#xff0c;长一波被股市收割一波&#xff0c;不可谓不惨。但要较真的话&#xff0c;散户仍是有必定身份的&#xff0c;最少他是所持股的股东。有人会好奇&#xff0c;原来散户也算股东吗&#xff1f;那他能不能参与公司的股东大会&#xf…

一篇文章教你自动化测试如何解析excel文件?

前言 自动化测试中我们存放数据无非是使用文件或者数据库&#xff0c;那么文件可以是csv&#xff0c;xlsx&#xff0c;xml&#xff0c;甚至是txt文件&#xff0c;通常excel文件往往是我们的首选&#xff0c;无论是编写测试用例还是存放测试数据&#xff0c;excel都是很方便的。…

怎么测试app?app的测试技巧是什么?

前言 今天笔者想和大家来唠唠app测试&#xff0c;现在的app有非常的多&#xff0c;这些app都是需要经过测试之后才能发布到应用市场中&#xff0c;app已经成为了我们日常生活中不可或缺的一部分了&#xff0c;但它的功能必须强大&#xff0c;才能受到消费者的重视&#xff0c;并…

深度学习3:激活函数

一、激活函数的简介与由来 激活函数&#xff1a;是用来加入非线性因素的&#xff0c;解决线性模型所不能解决的问题。 线性函数的组合解决的问题太有限了&#xff0c;碰到非线性问题就束手无策了。如下图。 通过激活函数映射之后&#xff0c;可以输出非线性函数。 最后再通过…

Ubuntu下跑Aplaca报错:torch.cuda.0utofMemoryError: CUDA out of memory.解决办法(查看CUDA占用情况清除GPU缓存)

缓存不够&#xff01;&#xff01;&#xff01;&#xff01;并非内存容量不够 错误提示&#xff1a; torch.cuda.0utofMemoryError: CUDA out of memory.Tried to allocate 2.00 MiB (PU 0; 23.69 GiB total capacity; 237 BiB already allocated; 18.38 MiB fre; 2.50 GiB re…

解决elementUI打包上线后icon图标偶尔乱码的问题

解决vue-elementUI打包后icon图标偶尔乱码的问题 一、背景二、现象三、原因四、处理方法方式1&#xff1a;使用css-unicode-loader方式2&#xff1a;升高 sass版本到1.39.0方式3&#xff1a;替换element-ui的样式文件方式4&#xff1a;更换打包压缩方式知识扩展&#xff1a;方式…

一文读懂AUTOSAR系列 – DEM功能详解

摘要&#xff1a; DEM是以DTC为核心的AUTOSAR基础软件模块&#xff0c;实现了对DTC的监控上报&#xff0c;存储等功能&#xff0c;如果需要对AUTOSAR诊断进行进一步学习&#xff0c;还需要对DCM&#xff0c;Doip&#xff0c;Cantp等模块进行系统性学习。 前言 Dem是AUTOSAR中配…

【MySQL系列】ALTER语句详解,以及UPDATE,DELECT,TRUNCATE语句的使用+区别

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

网络货运平台盈利指南

8月17日&#xff0c;由中国物流与采购联合会主办的2023&#xff08;第十五届&#xff09;物流与供应链数字化发展大会在贵阳成功举办&#xff01; 会议期间&#xff0c;数据宝作为中物联副会长单位受邀出席&#xff0c;并与菜鸟集团、中储、满帮、华润、货运中国、山东高速、德…

玩转自动化测试:Monkey工具的实践应用

本文将介绍monkey在自动化测试中的使用技术&#xff0c;主要包括monkey的安装和配置&#xff0c;使用monkey进行自动化测试的步骤&#xff0c;以及monkey的常用选项和技巧 01、Monkey的安装和配置 Mac OS X 在Mac OS X中&#xff0c;可以通过终端进行monkey的安装和配置 安…