PHP代码审计系列(二)

news2024/11/14 1:18:55

PHP代码审计系列(二)

本系列将收集多个PHP代码安全审计项目从易到难,并加入个人详细的源码解读。此系列将进行持续更新。

strcmp比较字符串

源码如下

<?php
$flag = "flag";
if (isset($_GET['a'])) {  
    if (strcmp($_GET['a'], $flag) == 0) //如果 str1 小于 str2 返回 < 0; 如果 str1大于 str2返回 > 0;如果两者相等,返回 0。 

    //比较两个字符串(区分大小写) 
        die('Flag: '.$flag);  
    else  
        print 'No';  
}

?>

通读代码逻辑如下:

首先判断是否存在GET请求参数a

若存在使用strcmp函数比较a与flag是否相等,若相等则输出flag退出脚本

输入正确的flag,但我们是不知道flag的值的

在这里插入图片描述

利用strcmp函数的漏洞,当传入非字符串类型的数据这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0也就是会判断相等

在这里插入图片描述

sha()函数比较绕过

源码如下

<?php

$flag = "flag";

if (isset($_GET['name']) and isset($_GET['password'])) 
{
    if ($_GET['name'] == $_GET['password'])
        echo '<p>Your password can not be your name!</p>';
    else if (sha1($_GET['name']) === sha1($_GET['password']))
      die('Flag: '.$flag);
    else
        echo '<p>Invalid password.</p>';
}
else
    echo '<p>Login first!</p>';
?>

通读代码逻辑如下:

首先判断GET请求中是否存在name与password参数若都存在继续进行

然后判断name是否等于password若等于则失败

经过sha1加密===相等则输出flag

这题也是条件矛盾了,根据sha1的漏洞进行比较的绕过(md5函数也存在)。

传入非字符串类型使得sha1函数返回错误为false,两个都这样操作就false===false条件成立

在这里插入图片描述

SESSION验证绕过

源码如下

<?php

$flag = "flag";

session_start(); 
if (isset ($_GET['password'])) {
    if ($_GET['password'] == $_SESSION['password'])
        die ('Flag: '.$flag);
    else
        print '<p>Wrong guess.</p>';
}
mt_srand((microtime() ^ rand(1, 10000)) % rand(1, 10000) + rand(1, 10000));
?>

通读代码逻辑如下:

首先启动session

判断GET请求是否携带password如果携带则继续

判断password与session中存储的password是否一致,一致则输出flag

使请求与session中存储的 password一致即可

http://localhost/phpbugs/08.php?password=

密码md5比较绕过

源码如下

<?php

//配置数据库
if($_POST[user] && $_POST[pass]) {
    $conn = mysql_connect("********, "*****", "********");
    mysql_select_db("phpformysql") or die("Could not select database");
    if ($conn->connect_error) {
        die("Connection failed: " . mysql_error($conn));
} 

//赋值

$user = $_POST[user];
$pass = md5($_POST[pass]);

//sql语句

// select pw from php where user='' union select 'e10adc3949ba59abbe56e057f20f883e' # 

// ?user=' union select 'e10adc3949ba59abbe56e057f20f883e' #&pass=123456

$sql = "select pw from php where user='$user'";
$query = mysql_query($sql);
if (!$query) {
    printf("Error: %s\n", mysql_error($conn));
    exit();
}
$row = mysql_fetch_array($query, MYSQL_ASSOC);
//echo $row["pw"];

  if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {

//如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。


    echo "<p>Logged in! Key:************** </p>";
}
else {
    echo("<p>Log in failure!</p>");

  }
}
?>

通读代码逻辑如下:

首先判断POST请求中是否存在user与pass字段,若存在尝试连接数据库,连接失败结束脚本

之后对pass字段进行MD5加密赋值给变量$pass,user字段赋值给、$user

执行以下sql,如果未查询到结果结束脚本

select pw from php where user='$user'

若查询到数据结果,将执行mysql_fetch_array函数以关联数组形式返回数据查询结果

如果返回的数组中存在pw字段并且$pass等于数组中的pw字段输出flag

sql中存在注入,构造修改sql返回的pw结果集,payload如下

user=' union select 'e10adc3949ba59abbe56e057f20f883e'#&pass=123456

在这里插入图片描述

urldecode二次编码绕过

源码如下

<?php
if(eregi("hackerDJ",$_GET[id])) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
  echo "<p>Access granted!</p>";
  echo "<p>flag: *****************} </p>";
}
?>

通读代码逻辑如下:

首先判断GET请求中是否存在id参数,若存在终止脚本

对id参数通过urldecode函数进行url解码

如果解码后的id等于hackerDJ则输出flag

对hackerDJ中的h进行二次url编码绕过

h对应的url编码未%68,%68url编码结果为%2568

在这里插入图片描述

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

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

相关文章

DBCO-PEG3-Maleimide,Mal-PEG3-DBCO,二苯并环辛炔-三聚乙二醇-马来酰亚胺

​ 中英文名&#xff1a; CAS号&#xff1a;N/A| 英文名&#xff1a;DBCO-PEG3-Maleimide&#xff0c;Mal-PEG3-DBCO |中文名&#xff1a;二苯并环辛炔-三聚乙二醇-马来酰亚胺物理参数&#xff1a; CASNumber&#xff1a;N/A Molecular formula&#xff1a;C34H38N4O8 Molecul…

[附源码]计算机毕业设计绿色生鲜Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

一键免密登录云平台!ZStack Cloud 4.5.0等你来解锁……

近日&#xff0c;ZStack Cloud 4.5.0发布&#xff0c;新增支持多种标准单点登录&#xff08;SSO&#xff09;协议。云平台现可对接OIDC/OAuth2/CAS三种协议的统一身份认证系统&#xff0c;使认证系统中的用户可一键免密登录云平台&#xff0c;大大提高了云平台的访问效率和安全…

在 Git Bash 中为 vim 设置 Dracula 配色

因为本人一直习惯了用 Jetbrains 家的产品&#xff0c;而且一直独钟 Dracula 配色&#xff0c;因此想要在 Git Bash 中为 vim 配一款 Dracula 配色。本博客将详细介绍如何为 vim 配置暗系主题 Dracula。 一、安装 Dracula 在 Dracula 的官网其实已经给出了关于如何在 vim 中配…

Pygame入门

目录一、初始化pygame环境&#xff08;一&#xff09;在pycharm中新建一个工程&#xff08;二&#xff09;安装pygame&#xff08;三&#xff09;测试安装是否成功二、pygame基础&#xff08;一&#xff09;pygame初始化&#xff08;二&#xff09;设置显示界面&#xff08;三&…

[附源码]计算机毕业设计JAVA在线二手车交易信息管理系统

[附源码]计算机毕业设计JAVA在线二手车交易信息管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; S…

《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright

第二十二节 单文件模式打包Playwright 打包示例源码下载: 请看文章末尾 版本信息: playwright==1.28.0 pyinstaller==5.3 打包系统: Windows 10 打包前我们要先运行下代码,确保没有报错: # belle.py from playwright.sync_api import sync_playwrightwith sync_playw…

【Android】 android | as | android studio 安装与使用

一、说明 1、本文重点介绍android studio的使用&#xff0c;做Android应用开发 2、主要包括&#xff1a; 下载&#xff0c;安装&#xff0c;sdk配置&#xff0c;工具使用说明 二、下载Android Studio与配置 1、下载链接 https://developer.android.google.cn/studio 2、安装 参…

特征工程特征预处理归一化与标准化、鸢尾花种类预测代码实现

一、特征预处理 特征工程目的&#xff1a;把数据转换成机器更容易识别的数据 scikit-learn&#xff1a;提供几个常见的实用程序函数和转换器类&#xff0c;以将原始特征向量更改为更适合下游估计器的表示形式。即通过一些转换函数将特征数据转换成更加适合算法模型的特征数据…

IDEA基本配置

1.设置maven 1.在File->settings->搜索maven 2.Mavan home directory--设置maven安装包的bin文件夹所在的位置 3.User settings file--设置setting文件所在的位置 4.Local repository--设置本地仓库 2.IDEA 设置代码行宽度 1.在File->settings->Editor->Code St…

深度学习训练营之彩色图片分类

深度学习训练营原文链接环境介绍前置工作设置GPU导入数据归一化操作图片可视化构建CNN网络进行编译模型训练结果可视化图片展示对图片的内容进行辨别模型的精度评估原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&…

我为什么选择博客园!

过去一段时间我尝试了很多平台&#xff0c;说下感受。但是最后我还是选择了博客园。 1. 开始写csdn的原因&#xff1a; 积累一些东西&#xff0c;从而为自己的简历以及工作加分。 分享知识。 梳理知识和记录&#xff0c;因为好多东西做过&#xff0c;再问就忘了。尤其是面试…

深度学习-扩张卷积(dilated convolution)

1. 前言 扩张卷积&#xff08;DilatedConvolution&#xff09;也被称为空洞卷积或者膨胀卷积&#xff0c;是在标准的卷积核中注入空洞&#xff0c;以此来增加模型的感受野&#xff08;receptionfield&#xff09;\color{blue}{扩张卷积&#xff08;Dilated Convolution&#xf…

IOS内测记录:在自有App中运行小程序游戏

作为FinClip的老用户&#xff0c;很早就向官方提出了希望支持微信小游戏的建议。现如今&#xff0c;官方也把小游戏支持提上了日程&#xff0c;近期开启了公测通道。团队用小游戏进行了测试&#xff0c;在这里记录分享一下测试情况。 实现效果将微信小游戏搬到自己的APP中使用…

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

在本文中&#xff0c;我们将看到如何创建语言翻译模型&#xff0c;这也是神经机器翻译的非常著名的应用。 最近我们被客户要求撰写关于NLP的研究报告&#xff0c;包括一些图形和统计输出。我们将使用seq2seq通过Python的Keras库创建我们的语言翻译模型。 假定您对循环神经网络…

飞行器动力学和控制项目(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 以下技术任务是在固定翼小型无人机上执行的。 刚体动力系统模型及其数值模拟。模拟具有测量误差的车载传感器。根据传感器数据…

【BUG日记】【Processing】NullPointerException,unable to decode sound file “xxx“

【日期】 2022/12/6 【问题】 报错&#xff1a;unable to decode sound file pig.mp3 想进行操作的是读取本地的图片或者音频&#xff0c;都会出现这个问题。 研究半天还一直以为是引入的 sound 库有问题。 音频的 bug 图片的 bug 【原因】 不知道什么原因&#xff0c;一直…

docker部署项目

文章目录前言一、下载安装docker&#xff1a;1.前提工作1.1 查看linux版本1.2 yum包更新到最新1.3 安装工具包1.4 设置yum源并更新yum包索引2.安装docker2.1 安装docker-ce2.2 启动docker2.3 查看已安装docker版本2.4 设置docker开机自启动2.5 配置镜像加速3.docker常用命令二、…

思科模拟器 | 交换机的vlan配置和truck配置

vlan 与 truck一、vlan配置【实现同一vlan的主机通信】1、基本配置和接线2、vlan配置与端口连接3、测试连接二、truck配置【实现连接在不同交换机上的同一vlan的主机通信】1、基本配置和接线2、vlan配置与端口连接3、打truck做连接3、测试连接一、vlan配置【实现同一vlan的主机…

vue Pinia 全局主题切换

文章目录vue Pinia 全局主题切换基本环境结果展示过程解析vue Pinia 全局主题切换 目的 : 实现单页面上切换主题,例如 关灯或开灯; 环境: vue3.0 vite Pinia 基本环境 // tsconfig.json 文件中 新增路径配置 导入自定义文件时可以之间导入 {"compilerOptions": {&…