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

这篇具有很好参考价值的文章主要介绍了php 系列题目,包含查看后端源代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、弱类型比较问题

原则:

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

例题

php 系列题目,包含查看后端源代码,PHP,php,开发语言

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

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.后端源码会以注释形式展示在前端源代码中

php 系列题目,包含查看后端源代码,PHP,php,开发语言

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

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

例题:

php 系列题目,包含查看后端源代码,PHP,php,开发语言

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

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

就会自动下载交换文件php 系列题目,包含查看后端源代码,PHP,php,开发语言

 文件内的内容就包含后端源代码php 系列题目,包含查看后端源代码,PHP,php,开发语言文章来源地址https://www.toymoban.com/news/detail-675270.html

到了这里,关于php 系列题目,包含查看后端源代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决:eclipse无法查看源代码

            eclipse的jdk没有配置对应的src,需要手动去添加jdk的源代码附件。 步骤如下: 1、找到以下路径: windows(窗口)–Preferences(首选项)–Java–Installed JRES(已安装的JRE) ,出现如下图所示的图片后,选中点击jdk并点击右边的 Edit(编辑)按钮。 2、找到你安装的jdk路径下的l

    2024年02月16日
    浏览(67)
  • 查看.Net源代码vs版本号

    方法:用记事本打开vs项目的.sln文件. 第2行就是这个源代码包的开发软件vs版本号了 Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Microso

    2024年02月11日
    浏览(54)
  • 用什么工具可以查看apk文件源代码

    APK文件的源代码可以使用以下工具查看: APK Tool: 一款开源的Android应用程序反编译工具 Dex2Jar: 一款将Android的dalvik字节码文件(.dex)转换为Java字节码文件(.jar)的工具 Jadx: 一款快速且功能强大的Android反编译工具 AndroGuard: 一款反编译、分析和安全测试Android应用程序的工具 使用这

    2024年02月11日
    浏览(43)
  • 解决Vue项目F12查看源代码问题

    在Vue项目中,Vue-cli默认可以通过F12查看前端代码,这可能会造成前端代码泄露。 为了代码的安全性,隐藏掉比较好。配置如下: Vue-cli2配置 打开config目录中的index.js文件,将build对象里的productionSourceMap设置成false Vue-cli3及以上版本配置 在跟目录打开Vue.config.js文件,如果没有

    2024年02月15日
    浏览(46)
  • PHP-MySQL图书管理系统(附源代码)

    本系统采用phpstudy开发平台,采用PHP和MySQL数据库进行开发,开发工具为HBuilder。phpStudy是一个PHP调试环境的程序集成最新的 Apache+PHP+MySQL+phpMyAdmin,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。(其他平台均可)@@@文末有获取方式 功能: 图书部分: 图书录入

    2024年02月11日
    浏览(43)
  • 麻雀算法SSA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码

    针对大家评论区给出的很多问题,作者一直都有关注,因此在这里又写了一篇文章,而且思路与这篇文章有不同之处,至于具体的不同之处放在下一篇文章了,大家感兴趣的可以移步观看,下一篇文章可以说是 作者的呕心力作。 (4条消息) 白鲸优化算法优化VMD参数,并提取特

    2024年02月09日
    浏览(84)
  • ProGuard 进阶系列(一): 运行源代码

    在前面的文章深入 Android 混淆实践:ProGuard 通关秘籍和深入 Android 混淆实践:多模块打包爬坑之旅中,已经讲到了如何在 Android 中使用 ProGuard,以及如何自定义实现混淆规则的生成。为了更深入地理解 ProGuard 的细节,本系列文章从我感兴趣的点出发,记录在阅读 ProGuard 源码

    2024年02月09日
    浏览(120)
  • 【UE Unreal Camera】【保姆级教程二】【包含源代码】手把手教你通过UE获取摄像头帧数据

       【UE Unreal Camera】【保姆级教程二】【包含源代码】手把手教你通过UE获取摄像头帧数据~ c6ebbaddb1aff.png)   在UE 摄像头教程一中,我们已经通过Unreal自带的媒体播放器打开了摄像头,并且将摄像头的数据展示在了游戏画面中。当然这只是最基本的功能,一般情况下,我们

    2024年02月01日
    浏览(54)
  • 改进的北方苍鹰算法优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码...

    今天给大家带来一期由改进的北方苍鹰算法(SCNGO)优化VMD的两个参数。 同样以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据中1000个数据点。没有数据的看这篇文章。西储大学轴承诊断数据处理,matlab免费代码获取 选取四种适应度函数进行优化,以此确定VMD的最佳k和

    2024年02月15日
    浏览(104)
  • 【数据结构】计数排序 & 排序系列所有源代码 & 复杂度分析(终章)

    目录 一,计数排序 1,基本思想 2,思路实现 3,计数排序的特性总结: 二,排序算法复杂度及稳定性分析 三,排序系列所有源代码 Sort.h Sort.c Stack.h Stack.c 计数排序也叫非比较排序; 1,基本思想 计数排序又称为 鸽巢原理 ,是对 哈希直接定址法 的变形应用 操作步骤 : 1

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包