首页 > 编程语言 >一道PHP源码的问题

一道PHP源码的问题

时间:2024-08-21 17:49:09浏览次数:6  
标签:username PHP admin stmt 一道 源码 login password

<?php

define("MYSQL_HOST",$_ENV['MYSQL_HOST']);
define("MYSQL_PORT",$_ENV['MYSQL_PORT']);
define("MYSQL_DATABASE",$_ENV['MYSQL_DATABASE']);
define("MYSQL_USER",$_ENV['MYSQL_USER']);
define("MYSQL_PASSWORD",$_ENV['MYSQL_ROOT_PASSWORD']);

$data = $_ENV["TARMAN_DYNAMIC_FLAG"];
$flag = "/tmp/flag.txt";

file_put_contents($flag,$data);

if (!isset($_GET['action'])) highlight_file(__FILE__);;
$pdo = new PDO("mysql:host=".MYSQL_HOST.":".MYSQL_PORT.";dbname=".MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD);

$action = $_GET['action'];
switch ($action) {
    case 'query':
        $username = $_GET['username'];
        $sql = "SELECT * FROM users WHERE username = '$username';";

        $stmt = $pdo->query($sql);
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        print_r($row);
        break;
    case 'login':
        $username = $_GET['username'];
        $password = md5($_GET['password']);
        $stmt = $pdo->prepare("select * from users where username=? and password=?");
        if ($stmt->execute(array($username, $password)) && $stmt->fetch()['username'] === 'admin') {
            readfile($flag);
        } else
            die('login failed');
        break;
}

$pdo = null;

本质:SQL注入
分成两部分的代码,上面一部分全是一些莫名的定义,于是我们从switch看,有两个分支,我们先试第一个https://scene-nmhniei7st8i17so-web-80.zhigeng.toolmao.com/?action=query&username=admin
得到回显Array ( [id] => 1 [username] => admin [password] => 111111 )
现在得知 账户 和 密码,于是我们跳到第二个分支login里面来,传入111111后,我们发现它显示login failed,这是因为后端会把输入的md5与数据库的比较,于是

标签:username,PHP,admin,stmt,一道,源码,login,password
From: https://www.cnblogs.com/Alaso687/p/18372223

相关文章

  • 【有源码】大数据背景下基于Python的旅游数据可视化分析与推荐系统k-means满意度分析
    注意:该项目只展示部分功能,如需了解,文末咨询即可。本文目录1.开发环境2系统设计2.1设计背景2.2设计内容3系统页面展示3.1展示页面3.2功能展示视频4更多推荐5部分功能代码5.1爬虫代码5.2词云代码1.开发环境开发语言:Python技术:Flask、协同过滤算法数......
  • Java计算机毕业设计框架的贵州农产品销售平台设计与实现(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在乡村振兴战略的大背景下,贵州作为农业大省,拥有丰富的农产品资源,但长期以来面临着信息不对称、销售渠道狭窄、品牌知名度不高等问题,严重制约了当地农......
  • Java计算机毕业设计的在线课堂考试系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着前所未有的变革。传统的教学模式受限于时间、空间及资源分配,难以满足个性化学习和高效评估的需求。特别是在......
  • 【源码解析】C/C++开源代码解析引擎
    1. 背景说明针对Simulink或其他MBD环境的模型生成代码,及其他的外部C/C++代码工程,做相应的后端代码优化处理工作,例如如下场景,统计代码内的全局变量声明及其内存占用情况;提取代码内的逻辑判断条件结合Z3Prover定理证明器进行形式化验证;...因此需要对C/C++代码进行语法......
  • 「漏洞复现」微商城系统 goods.php SQL注入漏洞
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • java线程池任务执行过程 | java线程池原理探究 | 线程池源码
    目录一、线程池的使用二、线程池的创建2.1构造方法及参数2.2拒绝策略2.2.1AbortPolicy(直接抛出异常)2.2.2 CallerRunsPolicy(将任务交给调用者处理)2.2.3 DiscardOldestPolicy(弹出队列中等待最久的任务)2.2.4 DiscardPolicy(无操作)2.2.5自定义拒绝策略(实现Rejected......
  • 源码解析之为何要用ConcurrentHashMap
    为什么要用ConcurrentHashMap?ConcurrentHashMap是JUC包下的一个线程安全的HashMap类,我们都知道多线程的场景下要用ConcurrentHashMap来代替HashMap使用,有没有想过为什么不能用HashMap,为什么能用ConcurrentHashMap呢?下面我通过走源码的方式,带大家看一看其中的一些细节!HashMapmap......
  • 基于SSM的小区物业管理系统2【附源码+文档】
    ......
  • PHP基础知识(精推版)
     1. 基本的PHP语法​<?phpecho"Hello,World!";?>​2. 变量和数据类型<?php$name="Alice";$age=25;$isStudent=true;echo"Name:$name,Age:$age,Student:".($isStudent?"Yes":"No");?>......
  • DevEco Studio 调试三方库源码
    有相关的官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-app-debugging-26-V5实操:将编译好的三方库文件和符号文件整理好在工程中添加对库文件的使用,一般是将库文件放到libs/arm64-v8a下点击顶栏的选项,Run->EditConfigurations,进入到R......