CTF网络安全大赛web题目:just_sqli
这道题目是bugku的web题目
题目的 描 述: KosenCTF{}
原文链接: CTF网络安全大赛web题目:just_sqli - 红客网-网络安全与渗透技术
题目Web源代码:
<?php$user = NULL;
$is_admin = 0;if (isset($_GET["source"])) {highlight_file(__FILE__);exit;
}if (isset($_POST["username"]) && isset($_POST["password"])) {$username = $_POST["username"];$password = $_POST["password"];$db = new PDO("sqlite:../database.db");$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);try {$db->exec("CREATE TABLE IF NOT EXISTS users (username TEXT UNIQUE, password TEXT, is_admin BOOL);");$q = "username, is_admin FROM users WHERE username = '$username' AND password = '$password'";if (preg_match("/SELECT/i", $q)) {throw new Exception("only select is a forbidden word");}$rows = $db->query("SELECT " . $q, PDO::FETCH_ASSOC);foreach ($rows as $row) {$user = $row["username"];$is_admin = $row["is_admin"];}}catch (Exception $e) {exit("EXCEPTION!");}}?><!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Just SQLi</title>
</head>
<body><h1>Just SQLi</h1> <div><a href="?source=1">view source</a><?php if ($user) { ?><div>Nice Login <?= $user ?></div><?php if ($is_admin) { ?><div>And Nice to Get the Admin Permission!</div><div> <?= include("../flag.php"); ?></div><?php } ?><?php } ?><form action="" method="POST"><div>username: <input type="text" name="username" required></div><div>password: <input type="text" name="password" required></div><div><input type="submit" value="Login"></div></form></body>
</html>
从给定的PHP代码中,有几个关键的安全问题可以被利用来进行SQL注入。但首先,需要注意的是代码中尝试使用preg_match来防止"SELECT"关键词的使用,然而这种尝试是无效的,因为它并没有在构造完整的SQL查询时应用此检查。
下面是一个可能的SQL注入攻击步骤,来绕过身份验证并获取管理员权限:
原文链接: CTF网络安全大赛web题目:just_sqli - 红客网-网络安全与渗透技术
- 用户名注入:由于用户名和密码直接插入到SQL查询中,我们可以尝试在用户名字段中注入SQL代码。但是,由于
preg_match检查,我们不能直接包含"SELECT"。但我们可以尝试其他方法,如注释掉原查询的剩余部分。 - 构造注入语句:在用户名字段中,我们可以尝试使用SQL注释(
--在SQLite中是有效的)来截断原始查询的其余部分,并附加我们自己的查询条件。由于代码尝试直接构造一个片段并添加到SELECT查询中,我们可以利用这一点。 - 绕过
preg_match:由于preg_match只检查$q变量(这只是一个片段,不是完整的SQL查询),我们可以构造一个不包含"SELECT"的片段,但在实际执行时,它将成为完整的SELECT查询的一部分。
下面是一个可能的注入攻击示例(请注意,这只是一个示例,实际情况可能有所不同):
在用户名字段中输入:
' OR '1'='1' --
在密码字段中输入任意值(例如"password123")。
提交表单后,生成的SQL查询将是:
SELECT username, is_admin FROM users WHERE username = '' OR '1'='1' --' AND password = 'password123'
由于--是SQL注释,所以查询的剩余部分(包括密码验证部分)将被忽略。这样,查询将返回表中的所有用户,无论他们的密码是什么。
然而,为了获取管理员权限,我们可能还需要进一步利用其他漏洞或尝试其他注入方法,因为此查询仅返回用户名和is_admin字段,而不直接修改它们。
但请注意,这种攻击是违法的,并且只应在法律允许和道德接受的环境(如安全培训或测试环境)中进行。在实际环境中尝试此类攻击可能导致法律责任和其他后果。
原文链接: CTF网络安全大赛web题目:just_sqli - 红客网-网络安全与渗透技术
我们开始对这个题目进行sql注入吧
一开始我们先盲注,构造查询语句
admin'or 1=1 --
发现行不通
接着我们开始联合查询
admin'union select 1,2#
发现还是不行
看了下代码, preg_match("/SELECT/i", $q这个对select进行了处理。
接着我们开始下一个方法就是用values进行替换select就行了
admin'union values('password',1) --

也是成功拿到答案
红客网(blog.hongkewang.cn)
原文链接:
CTF网络安全大赛web题目:just_sqli - 红客网-网络安全与渗透技术
相关文章:
CTF网络安全大赛web题目:just_sqli
这道题目是bugku的web题目 题目的 描 述: KosenCTF{} 原文链接: CTF网络安全大赛web题目:just_sqli - 红客网-网络安全与渗透技术 题目Web源代码: <?php$user NULL; $is_admin 0;if (isset($_GET["source"])) {highlig…...
Java入门基础学习笔记27——生成随机数
Random的使用:生成随机数。 随机数应用: 随机点名: 年会抽奖: 猜数字游戏: 密码学。 查看API文档: package cn.ensource.random;import java.util.Random;public class RandomDemo1 {public static voi…...
EasyImage2.0 图床源码
EasyImage2.0 是一个简单图床的源码,它支持以下功能: 1. API接口 2. 登录后才能上传图片 3. 设置图片质量 4. 压缩图片大小 5. 添加文字或图片水印 6. 设定图片的宽度和高度 7. 将上传的图片转换为指定的格式 8. 限制上传图片的最小宽度和高度 …...
人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析
人工智能创新领衔,Android系统如虎添翼:2024 Google I/O 大会深度解析 2024年5月14日举行的Google I/O大会,犹如一场精彩的科技盛宴,吸引了全球的目光。大会上,谷歌发布了一系列重磅产品和技术更新,展现了…...
下单制造fpc的工艺参数
FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦: 华秋: 背胶: FPC板背胶是可以粘接在光滑表面的一种薄型胶带,可以在狭小以及光滑的表面上用来提供高…...
位拆分与运算
描述 题目描述: 现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12], 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号(在不输出时候拉低) 0: 不输出且只有此时的输入有…...
windows11目标文件夹访问被拒绝-将安全信息应用到以下对象时发生错误
将安全性信息应用到以下对象时发生错误”解决办法 要夺取所有权时,点“安全”添加用户并允许所有权限后点击“应用”, 一直“无法保存对。。。(文件夹名)权限所在的更改。拒绝访问”啊 必须先点击“高级”,把“允许父项…...
C#thread线程传参数更新UI的文本框
C#线程的用法有几个不同的地方: 1、怎么启动线程? 2、是不是需要传入参数? 3、是不是要调用到UI中的控件,并对其进行更新? 关于启动线程,这里一个示例是在form中启动: 定义一个private:sta…...
基于Vue和uni-app的增强型单选ccRadioView组件开发
标题:基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要:本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能,并支持反向传值,方便开发者快速实现单选…...
信息系统项目管理师0602:项目立项管理 — 历年考题(详细分析与讲解)
点击查看专栏目录 1、2017年11月第31题 题干: 项目经理小李依据当前技术发展趋势和所掌握的技术能否支撑该项目的开发,进行可行性研究。小李进行的可行性研究属于( )。 选项: A. 经济可行性分析 B. 技术可行性分析 C. 运行环境可行性分析 D. 其他方面的可行性分析 答案…...
vue2 中使用audio播放音频
<audio controls ref"audioPlayer" style"width:800px;"><source :src"obj.audioUrl" /></audio> data() {return {obj: {audioUrl: require(../../../../public/audio/video.wav)}}}, 有个地方一定要注意一下. 如果不写req…...
一键追爆款,GPT一键改文 ,绘唐3,绘唐工具
ai画影满足你的制作要求 一键追爆款,GPT一键改文 入口工具 AI推文小说&漫画解说&解压混剪 人物定义,角色定义,lora转换,模型转换,可视化参考满足 一键追爆款 一键挂机生成,效果更精彩ÿ…...
在C#中编写递归函数时,为了避免无限递归
在C#中编写递归函数时,为了避免无限递归(也称为栈溢出),你需要确保递归调用有一个明确的终止条件。这个终止条件通常基于一个或多个参数,当这些参数满足某个特定条件时,递归就会停止并返回结果。 以下是一…...
css层叠样式表——基础css面试题
1、css样式来源有哪些? 內联样式-<a style"color:red"></a>内部样式-<style></style>外部样式-写在独立.css文件中的浏览器用户自定义样式浏览器默认样式 2、样式优先级问题 不同级别下: !important作为style属性…...
数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)
文章目录 索引结构有哪些?二叉树详解?B-Tree详解?BTree详解?Hash详解?本篇小结 更多相关内容可查看 索引结构有哪些? MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包…...
Microsoft Azure AI语音服务
一:文字转语音SDK安装 安装语音 SDK - Azure AI services | Microsoft Learn 二:基于文本转语音Rest API 文本转语音 API 参考 (REST) - 语音服务 - Azure AI services | Microsoft Learn 三:基于文本合成语音 如何基于文本合成语音 - 语…...
【Linux】常用指令、热键与权限管理
一、常用指令 (1)ls 功能:列出指定目录下的所有子目录与文件 用法:ls (选项) (目录或文件名) 常用选项: -a:列出目录下的所有文件,包括隐藏…...
深度学习知识点全面总结
目录 1.深度学习的一些重要知识点 神经网络: 深度学习模型: 深度学习技术: 深度学习应用: 2.深度学习、机器学习、人工智能 3.用python实现简单神经网络模型 4.用于深度学习显卡推荐排序 5.深度学习如何入门? 掌握基础知识: 选择学习资源&…...
【编写控制手机压测的脚本】
编写一个控制手机压测的脚本可以使用Python语言来实现。以下是一个简单的示例脚本: import subprocess import time# 打开app subprocess.call(["adb", "shell", "am", "start", "-n", "com.example.app/.…...
计算机网络-路由策略与路由控制一
到目前为止我们学习了路由与交换基础,路由协议有静态、RIP、OSPF、IS-IS等,但是根据实际组网需求,往往需要实施一些路由策略对路由信息进行过滤、属性设置等操作,通过对路由的控制,可以影响数据流量转发。 因此我们开始…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
