Web三漏洞学习(其二:sql注入)
靶场:NSSCTF 、云曦历年考核题
二、sql注入
NSSCTF
【SWPUCTF 2021 新生赛】easy_sql
这题虽然之前做过,但为了学习sql,整理一下就再写一次
打开以后是杰哥的界面
注意到html网页标题的名称是 “参数是wllm”
那就传参数值试一试
首先判断注入类型(数字型或字符型)
传1
传2 没有回显
同样的,后面的3456都没有回显
光传abc也没有回显
所以应该是数字型注入
然后判断闭合方式
接下来传1' (单引号)
出现报错
然后传1" (双引号)
页面又有回显
回到报错的 1'页面,分析报错语句
注意看这个位置
这里要记住的是:无论是单引号还是双引号在sql语句中都是成对出现的,包括 ( ) { } 【】各种括号 。
所以上面的报错句应该注意到最后的一个引号,要成对则前面必有一个单引号与它成一对。
也就是说,在这个报错语句中,一对单引号 ' ' 包裹着刚才我们注入的内容:' 1' '
所以这一堆引号就该这么拆:
' ' 1' ' LIMIT 0,1 '
所以包裹着我们注入的 1' 的就是单引号 ' ' 。也就是说明这题的闭合方式是单引号。
既然如此那加个注释: --+
目的是把单引号注释掉
发现页面没有报错了,有了回显,这就说明闭合方式判断正确
这里还有一个验证是否存在sql漏洞的方法:
当输入1=1时(条件为真),页面正常显示或有回显
当输入1=2时(条件为假),页面未正常显示
这就说明我们输入的内容数据库是能够执行的,即存在sql注入漏洞
那么接下来就是一系列的爆数据库,直到爆出需要的信息(flag)
正规的讲叫先判断列数
语句是order by
比如现在一列列爆
第一列,有
第二列有
第三列也有
但是到了第三列就会显示它不认识了
包括后面的第5列也如此
也就是说,这个数据库里的表总的只有三列
既然查出了总列数,接下来就需要联合查询所有列数下的数据,语句 union select
这里要注意:需要把传入参数的值1改为-1
然后开始联合查询
可以看到用户名位于第2列的位置,密码位于第3列的位置 (回显位为2、3位)
接下来可以看看这两列的数据,一列列来,第2列:
有了 ,可以看到是test_db
第3列:
都是test_db ,这当然的,两个都在一个数据库(test_db)里面
爆出来的这个是数据库名
接下来查表名(table_name)
然后出现这么个东东
英语也不太好,翻译一下
ouou 我知道了,我只改了第2列数据库名的位置,忘了后面还有个第3列了
大意了haha
加入第3列
提示返回的信息超过一行
一个解决办法就是使用group_concat把table_name变为一行即可 group_concat(table_name)
得到有两个表的表名
接下来查列名(column_name ):
对应的把刚刚的表名table_name改为column_name(列名);
tables改为columns,最后加上刚查到的表名users
执行
select group_concat(column_name) from information_schema.columns where table_schema='test_db' and table_name='users'
得到列名为password
都查出来了,select后面的就全扔掉,看看列名为password的数据列里面有什么,有没有想要的数据(flag)但这里好像出了点问题,爆出来又是yyy(不对,没问题,我查的就是password,而password为yyy刚开始就告诉我了),所以问题在于没有爆出可用的列名
回去找了一下,应该是上一步爆列名的问题,命令
select group_concat(column_name) from information_schema.columns where table_schema='test_db' and table_name='users'
应该改写为
select group_concat(column_name) from information_schema.columns where table_schema='test_db'
即删去了后面的and tablename='users'
至于为什么要这么改,后面也想清楚了:
如果查列名的语句含有 and table_name='users' 这样就代表我们是查询名为users的表下的所有列名;
而如果删去 and table_name='users' 仅前面的语句就不指定表名而是查询所有表下的所有列名,这样才能把flag列名爆出来 (也就是说其实flag是存在于test_tb表下的,而并不在users表下,如果冒然的将查询列规定为users表下面,只会画蛇添足,还找不到flag)
弄清楚以后重新爆列名,不用多此一举限制查询的范围(删去 and table_name='users')
发现这次列名就全了,可以看到flag列了。
那么接下来直接爆flag
既然刚刚无意中发现flag不在users表下而是在test_tb表下,那就直接爆test_tb表的flag列即可
相关文章:
Web三漏洞学习(其二:sql注入)
靶场:NSSCTF 、云曦历年考核题 二、sql注入 NSSCTF 【SWPUCTF 2021 新生赛】easy_sql 这题虽然之前做过,但为了学习sql,整理一下就再写一次 打开以后是杰哥的界面 注意到html网页标题的名称是 “参数是wllm” 那就传参数值试一试 首先判…...
VLAN的知识
1.什么是VLAN? VLAN是虚拟局域网,逻辑隔离广播域和网络区域 是一种通过将局域网内的设备逻辑地划分为一个个网络的技术 2.对比逻辑网络分割和物理网络分割? 逻辑网络分割是VLAN,隔离广播域和网络区域 物理网络分割是路由&…...
RFID 赋能部队智能物联网仓储建设:打造信息化高效解决方案
在当今军事现代化进程的宏大背景下,部队后勤保障工作无疑占据着举足轻重的地位,而仓储管理作为其中的核心环节,更是至关重要。传统的仓储管理模式在面对当下物资种类繁杂、数量庞大的现状时,已显得力不从心,效率低下、…...
结构型屏蔽在高频电子设备中的应用与优化
在当今高度电子化的时代,随着电子产品工作频率不断提高,设备内部温度上升,电磁环境日趋复杂,电磁兼容(EMC)问题成为设计和制造过程中必须重点解决的问题。EMC不仅关系到设备自身的稳定运行,更涉…...
【教程】Ubuntu修改ulimit -l为unlimited
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 问题描述 解决方法一 解决方法二 解决方法三 (终极) 问题描述 查系统资源限制 ulimit -l如果返回的是 64 或其他较小值,那么RDM…...
【HDFS】BlockPlacementPolicyRackFaultTolerant#getMaxNode方法的功能及具体实例
方法参数说明: numOfChosen:已经选择的节点数numOfReplicas:还需要选择的副本数方法的返回值是一个长度为2的数组:[调整后的要选出多少个节点(不包括已经选择的), 每个机架最大能选择的节点数] @Overrideprotected int[] getMaxNodesPerRack(int numOfChosen, int numOfR…...
水污染治理(生物膜+机器学习)
文章目录 **1. 水质监测与污染预测****2. 植物-微生物群落优化****3. 系统设计与运行调控****4. 维护与风险预警****5. 社区参与与政策模拟****挑战与解决思路****未来趋势** 前言: 将机器学习(ML)等人工智能技术融入植树生物膜系统ÿ…...
数模小白变大神的日记2025.4.15日
分工 1.论文:mathtype (Latex) 2.建模;相应的建模知识与撰写方法,写摘要 3.编程:matlab、SPSs、(Python) 评价模型 1. 层次分析法 ①层次分析法是一种多目标、多准则的决策问题 ②层次分析法是一种主观加权法 ③层次分析法通过以下步骤实现: 1.构…...
STM32提高篇: 以太网通讯
STM32提高篇: 以太网通讯 一.以太网通讯介绍二.W5500芯片介绍1.W5500芯片特点2.W5500应用目标3.接入框图 三.驱动移植四.tcp通讯五.udp通讯六.http_server 一.以太网通讯介绍 以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以…...
4-15记录(冒泡排序,快速选择排序)
算法稳定 简单选择排序的实质就是最后一个和第一个比较,小,就换位置,然后继续用最后一个数字和第二个比较,以此类推。 但是算法不稳定,本来下划线的2在后面,但是经过算法后去了前面 快速排序 实现过程&am…...
Ubuntu系统18.04更新驱动解决方法
原始是:ubuntu18.04里面的驱动是470,对应cuda11.4 现在需要更新为525,对应cuda为12.0 实现: 1、打开终端 Ctrl Alt T2、使用 lspci 命令(快速查看显卡型号) lspci | grep -i vga3、终端输入 ubuntu-d…...
Rocky Linux 9.x 基于 kubeadm部署k8s
搭建集群使用docker下载K8s,使用一主两从模式 主机名IP地址k8s- master192.168.1.141k8s- node-1192.168.1.142k8s- node-2192.168.1.143 一:准备工作 VMware Workstation Pro新建三台虚拟机Rocky Linux 9(系统推荐最小化安装) …...
MATLAB程序实现了一个物流配送优化系统,主要功能是通过遗传算法结合四种不同的配送策略,优化快递订单的配送方案
%% 主函数部分 % function main()clear; clc; close all;% 生成或加载算例 filename = D:\快递优化\LogisticsInstance.mat; if ~exist(filename, file)instance = generate_instance();save(filename, -struct, instance); elseinstance = load(filename); end% 遗传算法参数配…...
利用宝塔面板搭建RustDesk服务
一、介绍 1.1官网 https://rustdesk.com/ 1.2github仓库 https://github.com/rustdesk/rustdesk 1.3特点 RustDesk 支持多种操作系统,包括 Windows、macOS、Linux、Android 和 iOS。它甚至提供网页版客户端,可以在浏览器中直接使用。 用户可以通过…...
前端与Java后端交互出现跨域问题的14种解决方案
跨域问题是前端与后端分离开发中的常见挑战,以下是14种完整的解决方案: 1 前端解决方案( 开发环境代理) 1.1 Webpack开发服务器代理 // vue.config.js 或 webpack.config.js module.exports {devServer: {proxy: {/api: {target: http://localhost:8…...
PBKDF2全面指南(SpringBoot实现版)
文章目录 第一部分:PBKDF2基础概念1. 什么是PBKDF2?2. 为什么需要PBKDF2?3. PBKDF2的工作原理4. PBKDF2与其他密码散列函数的比较第二部分:在Java和SpringBoot中使用PBKDF21. Java内置的PBKDF2支持2. SpringBoot中集成PBKDF22.1 添加依赖2.2 配置PBKDF2密码编码器2.3 自定义…...
基于RV1126开发板的rknn-toolkit-lite使用方法
1. rknn-toolkit-lite介绍 rknn-toolkit-lite是用于python算法的推理的组件,当前已经在EASY-EAI-Nano完成适配,用户可以用它进行深度学习算法的纯python开发。而且同时支持已经进行了预编译的模型,短短几行代码即可完成算法的推理,…...
一款轻量级的PHP地址发布页面源码
源码介绍 一款轻量级的PHP链接发布页面源码,适合快速搭建个性化的链接导航网站,支持动态链接管理和多种风格模板切换 1:后台登录地址为/admin/login.php,提供便捷的配置入口。 2:默认用户名是admin,密码为…...
分布式计算领域的前沿工具:Ray、Kubeflow与Spark的对比与协同
在当今机器学习和大数据领域,分布式计算已成为解决大规模计算问题的关键技术。本文将深入探讨三种主流分布式计算框架——Ray、Kubeflow和Spark,分析它们各自的特点、应用场景以及如何结合它们的优势创建更强大的计算平台。 Spark批量清洗快,…...
【专题刷题】双指针(一)
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:1,本人解法 本人屎山代码;2,优质解法 优质代码;3,精益求精,…...
火山引擎旗下防御有哪些
首先,我需要确认用户是不是打错了,比如把“引擎”当成了“云”,或者他们真的想了解火山引擎的防御机制。火山引擎是字节跳动旗下的云服务平台,类似于阿里云或腾讯云,所以用户可能想了解的是其安全防护措施。 接下来&am…...
python程序打包——nuitka使用
目前python打包成exe的工具主要有:PyInstaller Briefcase py2exe py2app Nuitka CX_Freeze等。 不同于C代码,可以直接编译成可执行的exe文件,或者js代码在浏览器中就能执行,python代码必须通过python解释器来运行,…...
编写了一个专门供强化学习玩的贪吃蛇小游戏,可以作为后续学习的playgraound
文章目录 **试玩效果****项目背景****核心设计思路****代码亮点解析****与强化学习算法的对接示例****扩展方向****总结****完整代码**把训练一个会玩小游戏的智能体,作为学习强化学习的一个目标,真的是很有乐趣的一件事。我已经不知为此花费了多少日夜了。如今已是着魔了一般…...
chain_type=“stuff 是什么 ? 其他方式有什么?
chain_type="stuff 是什么 ? 其他方式有什么? 目录 chain_type="stuff 是什么 ? 其他方式有什么?1. `chain_type="stuff"`2. `chain_type="map_reduce"`3. `chain_type="refine"`4. `chain_type="map_rerank"`在 LangCh…...
在IDEA里面建立maven项目(便于java web使用)
具体步骤: 第一次有的电脑你再创建项目的时候右下角会提醒你弹窗:让你下载没有的东西 一定要下载!!可能会很慢 运行结果: 因为他是默认的8080端口所以在运行的时候输入的url如下图: 新建了一个controller代…...
MyBatis 详解
1. 什么是 MyBatis? MyBatis 是一款优秀的 持久层框架,它通过 XML 或注解配置,将 Java 对象(POJO)与数据库操作(SQL)进行灵活映射,简化了 JDBC 的复杂操作。 核心思想:S…...
郑州工程技术学院党委书记甘勇一行莅临埃文科技调研交流
为深化产教融合、推动人工智能领域人才培养与产业需求精准对接,2025年4月9日下午,郑州工程技术学院党委书记甘勇、河南省人工智能产业创新发展联盟执行秘书长孟松涛等一行莅临埃文科技调研交流。 一、聚焦技术前沿 共话AI产业变革 座谈会上,…...
AI应用开发之扣子第一课-夸夸机器人
首先,进入官网:点击跳转至扣子。 1.创建智能体 登录进网站后,点击左上角+图标,创建智能体,输入智能体名称、功能介绍 2.输入智能体提示词 在“人设与回复逻辑”输入以下内容: # 角色 你是一…...
Node.js 数据库 CRUD 项目示例
希望使用Nodejs操作数据库做CRUD,用deepseek实战搜索“使用Nodejs对数据库表做CRUD的项目例子”,找到了解决方案,如下图所示: 项目结构 nodejs-crud-example/ ├── config/ │ └── db.js # 数据库连接配置 ├──…...
ESP8266/32作为AVR编程器(ISP programmer)的使用介绍
ESP8266作为AVR编程器( ISP programmer)的使用介绍 🌿ESP8266自带库例程:https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266AVRISP📍支持ESP8266/32的ESP_AVRISP其它开源工程(个人没有再去验证)&…...
union all几个常见问题及其解决方案
UNION ALL 是 SQL 中用于合并两个或多个 SELECT 语句结果集的操作符。与 UNION 不同,UNION ALL 不会去除重复的记录,它简单地将一个查询的结果附加到另一个查询的结果之后。尽管 UNION ALL 相对来说更高效(因为它不需要检查重复项)…...
21.C++11
1.列表初始化 1.1C11中的{} •C11以后想统⼀初始化⽅式,试图实现⼀切对象皆可⽤{}初始化,{}初始化也叫做列表初始化。 • 内置类型⽀持,⾃定义类型也⽀持,⾃定义类型本质是类型转换,中间会产⽣临时对象,最…...
【交叉编译】目标机编译安装对应依赖库总结
1、解压目标机交叉编译工具链 # 创建工具链存放目录(可选) sudo mkdir -p /opt/toolchain# 解压到目标路径(示例路径:/opt/toolchain) sudo tar -xzvf 目标主机编译工具链.tar.gz -C /opt/toolchain# 查看解压后的目录…...
Docker华为云创建私人镜像仓库
Docker华为云创建私人镜像仓库 在华为云官网的 产品 中搜索 容器镜像服务 : 或者在其他页面的搜索栏中搜索 容器镜像服务 : 进入到页面后,点击 创建组织 (华为云的镜像仓库称为组织): 设置组织名字后&…...
【15】数据结构之基于树的查找算法篇章
目录标题 二叉排序树 Binary Sort Tree二叉排序树的插入二叉树排序树的删除二叉排序树的查找二叉排序树的调试与代码集合 平衡二叉树-AV树平衡二叉树的平衡化旋转平衡二叉树的代码调试与代码集合 B树B树的查找B树的插入B树和B*树 二叉排序树 Binary Sort Tree 二叉…...
自定义类型之结构体
1.结构体类型概述 结构体类型是一种用户自定义的数据类型,用于将不同类型的数据组合成一个整体。在C语言中,结构体使用struct关键字定义,由一系列具有相同类型或不同类型的数据构成的数据集合,也称为结构。结构体中的数据在逻辑上…...
SGFormer:卫星-地面融合 3D 语义场景补全
论文介绍 题目:SGFormer: Satellite-Ground Fusion for 3D Semantic Scene Completion 会议:IEEE / CVF Computer Vision and Pattern Recognition Conference 论文:https://www.arxiv.org/abs/2503.16825 代码:https://githu…...
应急响应篇钓鱼攻击邮件与文件EML还原蠕虫分析线索定性处置封锁
钓鱼邮件的eml中会有 邮件服务器地址域名(发信人)发送的本地IP和主机名发送的内容以及附件 邮件钓鱼: 攻击者目的:通过发信人,附件,取得突破 定性钓鱼邮件 威胁情报,人工分析来源,…...
利用纯JS开发浏览器小窗口移动广告小功能
效果展示 直接上代码 如果要用到vue项目里面,直接按照vue的写法改动就行,一般没有多大的问题,顶部的占位是我项目需求,你可以按照要求改动。 <!DOCTYPE html> <html> <head><meta charset"utf-8"…...
java Stream流
Stream流 双列集合无法直接使用stream流,可以通过keyset()或enteyset转换为单列集合,再进行操作 1.单列集合 package mystream;import java.util.ArrayList; import java.util.Collections;public class StreamDemo1 {public sta…...
【实战中提升自己】 防火墙篇之VPX部署–L2TP over IPSEC
1 VPx部署【L2TP Over ipsec】 说明:在VPX上面,我们希望与分部建立VPX,保证与分部的财务部正常通信,另外还提供L2TP Over ISPEC功能,方便远程接入访问内部服务器等。当然我们也可以做详细的控制ÿ…...
贪心算法(20)(java)整数替换
给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n 1或n - 1替换 n 。 返回 n 变为 1 所需的 最小替换次数 。 示例 1: 输入:n 8 输出:3 解…...
实验二.单按键控制LED
1.实验任务 如图4.1所示:在P0.0端口上接一个发光二极管L1,按键按一下灯亮,在按一下灯灭。 2.电路原理图 3.系统板上硬件连线 把“单片机系统”区域中的P0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容...
Ubuntu 常用命令行指令
1. 文件与目录操作 命令作用示例ls列出目录内容ls -l(详细列表)cd切换目录cd ~/Documentspwd显示当前目录路径pwdmkdir创建目录mkdir new_folderrm删除文件rm file.txtrm -r递归删除目录rm -r old_dircp复制文件cp file.txt backup/mv移动/重命名文件mv…...
Cribl 数据脱敏 -02 (附 测试数据)
先把实验的测试方向如下: Match Regex Replace Expression Example result <...
【项目管理】第16章 项目采购管理-- 知识点整理
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应&…...
根据关键字搜索日志内容,常用的Linux命令
在 Linux 中,根据关键字搜索日志内容是运维和开发的常见需求。以下是常用的命令及场景示例: 1. grep 基础搜索 (1) 简单关键字匹配 # 在文件中搜索包含 "error" 的行 grep "error" /var/log/nginx/error.log# 忽略大小写ÿ…...
数据结构(六)——红黑树及模拟实现
目录 前言 红黑树的概念及性质 红黑树的效率 红黑树的结构 红黑树的插入 变色不旋转 单旋变色 双旋变色 插入代码如下所示: 红黑树的查找 红黑树的验证 红黑树代码如下所示: 小结 前言 在前面的文章我们介绍了AVL这一棵完全二叉搜索树&…...
【Linux】基础 IO(文件描述符、重定向、缓冲区)
Linux 1.理解文件2.C文件接口1.打开 写文件2.读文件 简单实现cat命令3.输出信息到显示器的方式4.stdin、stdout、stderr5.打开文件的方式 3.系统接口 IO1.传递标志位2.open、close3.write、read 4.文件描述符1.是什么?2.分配规则3.重定向原理4.通过dup2系统调用重…...
记录一下远程调试 备忘
在进行远程调试时,目标主机不需要安装完整的编程环境(舍去重复安装)。可以使用Visual Studio的远程调试功能,或者使用gdb和gdbserver进行远程调试。 Visual Studio远程调试 复制远程调试器文件夹:将Visual Studio安装目录下的remot…...