sql注入的学习

news2024/11/16 13:55:52
1.首先我们应该确定sql注入的类型
利用id=1 and 1=1 和id=1 and 1=2 判断是数字类型注入还是字符型注入,如果两者都可以正常显示界面,则为字符型注入,否则是数字型

两个都正常显示,所以为字符型注入(也可以使用id=2-1,来判断,若是显示与id=1相同,则是数字型注入,若是和id=2相同则是字符型

2.判断完类型之后就要去找闭合方式
这一步主要是利用 ‘(单引号)和  “(双引号)来和数据库的指令中的单双引号引号形成闭合,方便我们注入自己的代码,因为不管是在指令还是代码中,像引号,括号一类的都是成对存在

我们可以将ip=x 后面添加单引号或者双引号来查看报错

可以看到添加单引号后页面提示,发生了报错

报错原因如图(因为多加了一个单引号,与之前的单引号产生了闭合,从而多出来一个单引号,所以我们需要在id=1’ 后加上指令,从而避免出现这种情况)

3.获取数据库,表名,列名,因为我们想要拿到管理员的账号密码,所以我们需要找到账号密码的存放位置,而在这之前,我们就要想办法找到表名,列名,而获取的的方法就是 猜

这里可以看到没有报错,而是提示列不同(最后实际是  --空格,用来忽略之后的所有指令,防止数据库中代码对我们的指令有影响,但是由于是ul,所以空格变+)

然后我们继续猜,但是要动脑子去猜,如果说他有几十列,我们不可能挨个去试,所以人还是要多读书,此时,我们就可以采取二分法,我们往大的猜,一半一半的缩小范围,专业又高效,但是这里并不是直接去更改select后的数字,而是利用数据库本身的代码order by(排序)去钻个空子

下面依次是对第十列,第五列和第三列进行排序,可以看到第三列正常显示,由此可以判断出这个表有三列

利用这个我们直接查询1,2,3列

到那时我们发现前端的显示没有任何变化,原因是在mysql的联合查询中,如果前面条件为真,则后面条件不生效,如果前面条件为假,则后面条件生效,所以此时我们需要更改前方的id=1为id=-1,因为id肯定不存在-1的,这样后面的指令就可以执行

index.php?id=-1' union select  1,2,3--+(也可以将数字换成version(),查询版本号)

通过更改,我们已经拿到了数据库名 security

可以看到security库中包含的内容,其中information为默认数据库包含着该库的所有信息(列,表等),所以我们借用informaton来查询我们需要的信息

 group_concat()是mysql的一个分组合并函数,通过这个函数可以把查询出来的表合并到一起现实,如果没有该函数,那么返回的内容如下:

pass: 如果没有该函数,那么查询的内容将是多行,网页上面无法显示完整,故需要使用该函数;

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users';-- +    (该指令为查询列信息使用,若是需要表细腻些,更改column为table 即可)

这样我们就拿到一些关键信息,username,password

?id=-1' union select 1,2,group_concat(username,2,password) from users;-- +

到此一切完成

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

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

相关文章

浏览器——HTTP缓存机制与webpack打包优化

文章目录 概要强缓存定义开启 关闭强缓存协商缓存工作机制通过Last-Modified If-Modified-Since通过ETag If-None-Match 不使用缓存前端利用缓存机制,修改打包方案webpack 打包webpack 打包名称优化webpack 默认的hash 值webapck其他hash 类型配置webpack打包 web…

Mysql运维篇(三) MySQL备份与恢复

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! 一、物理备份与逻辑备份 1、物理备份:备份数据文件,转储数据库物理文件到某…

isctf---misc

你说爱我?尊嘟假嘟 转换为ook编码 def convert_string(input_str):# 定义转换映射关系mapping {"你说爱我": "Ook.","尊嘟": "Ook!","假嘟": "Ook?"}# 遍历字符串,进行转换for key, va…

谷歌seo内容营销怎么做?

谷歌SEO内容营销就像是在为两个观众准备一场表演,一边是用户,一边则是谷歌搜索引擎,那么所谓的内容营销,你自然需要知道你的观众想看什么,这就是关键词研究,帮你了解用户在搜索什么,然后&#x…

什么是NAT?NAT类型有哪些?

晚上好,我的网工朋友。NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。 在大多数网络环境中,我们都需要通过 NAT 来访问 Internet。 NAT作为一种缓解IPv4公网地址…

数据预处理:纠偏

纠偏 1、偏态分布2、什么是纠偏3、数据纠偏 1、偏态分布 频数分布有正态分布和偏态分布之分。正态分布是指多数频数集中在中央位置,两端的频数分布大致对称 偏态分布是指频数分布不对称,集中位置偏向一侧。若集中位置偏向数值小的一侧,称为正…

航空MRO行业研究:2027年全球市场将达1200亿美元

随着全球航空运输业的不断发展,越来越多的航空器进入了使用年限,需要进行维修、修理和大修。这促进了航空MRO市场的不断增长。此外,航空器设备和技术的不断更新换代,也对航空MRO市场带来了新的机遇和挑战。 航空MRO市场是指维修、…

【Android】实现简易购物车功能(附源码)

先上结果&#xff1a; 代码&#xff1a; 首先引入图片加载&#xff1a; implementation com.github.bumptech.glide:glide:4.15.1配置权限清单&#xff1a; <!-- 网络权限 --><uses-permission android:name"android.permission.INTERNET"/><uses…

ubuntu22.04@laptop安装配置VNC服务端

ubuntu22.04laptop安装&配置VNC服务端 1. 源由2. 系统安装3. VNC安装3.1 系统更新3.2 lightdm安装3.3 x11vnc安装3.4 x11vnc配置3.5 x11vnc自启动3.6 x11vnc状态查询 4. 演示视频 1. 源由 最近系统搞TensorFlow, OpenCV, Python&#xff0c;折腾各种环境&#xff0c;把系统…

数据库管理-第139期 做大还是做小-Oracle名称哪些事(20240125)

数据库管理139期 2024-01-25 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09;1 问题2 排查3 扩展总结 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle A…

【备战蓝桥杯】——循环结构

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-bFHV3Dz5xMe6d3NB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Leetcode刷题笔记题解(C++):1114. 按序打印(多线程)

思路&#xff1a; 保证A,B,C三个线程的顺序不会变&#xff0c;即优先级顺序的问题 A,B需要资源1&#xff0c;B,C需要资源2 A先占用资源1和资源2&#xff0c;A线程完了之后释放资源1不释放资源2&#xff0c;然后B线程占用资源1&#xff0c;A线程完了之后释放资源1和资源2&…

【极数系列】Flink配置参数如何获取?(06)

文章目录 gitee码云地址简介概述01 配置值来自.properties文件1.通过路径读取2.通过文件流读取3.通过IO流读取 02 配置值来自命令行03 配置来自系统属性04 注册以及使用全局变量05 Flink获取参数值Demo1.项目结构2.pom.xml文件如下3.配置文件4.项目主类5.运行查看相关日志 gite…

D6212——由八路达林顿管 阵列和 H 桥驱动电路两个单元组成,可用于驱动步进电机等产品上

D6212是专为安防摄像头系统设计的驱动电路&#xff0c;电路由八路达林顿管 阵列和 H 桥驱动电路两个单元组成。八路达林顿管阵列均带有续流二极 管&#xff0c;可用于驱动步进电机&#xff1b;H 桥驱动电路单元可以直接驱动IR-CUT。单个 达林顿管在输入电压低至 1.8V 状态下支持…

SQL中实现行列转换

目录 方法一&#xff1a;sum case when 方法二&#xff1a;sum if 方法三&#xff1a;pivot 现在有一张表class_gender&#xff0c;内容如下&#xff1a; classgender一年级女一年级女一年级男一年级男二年级女二年级女二年级男 现在我们要根据上表&#xff0c;统计得到下…

spring boot学习第八篇:操作elastic search的索引和索引中的数据

前提参考&#xff1a;elastic search入门-CSDN博客 前提说明&#xff1a;已经安装好了elastic search 7.x版本&#xff0c;我的es版本是7.11.1 1、 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…

深分页怎么导致索引失效了?提供6种优化的方案!

深分页怎么导致索引失效了&#xff1f;提供6种优化的方案&#xff01; 上篇文章说到索引失效的几种规则&#xff0c;其中就有包括 深分页回表太多导致索引失效 的场景 本篇文章来聊聊深分页场景中的问题并提供几种优化方案&#xff0c;以下是本篇文章的思维导图&#xff1a; …

go学习之air库的使用

首先下载air库 go install github.com/cosmtrek/air之后你需要去找到库下载的地方&#xff0c;若使用的是go mod可以使用命令 go env GOPATH找到下载库的位置 进入后&#xff0c;有bin&#xff0c;pkg目录&#xff0c;进入bin目录&#xff0c;你能看到air.exe文件 这时候将此…

数据结构(队列Queue)

文章目录 一、队列1、队列的定义2、队列的顺序实现2.1、初始化2.2、入队2.3、出队2.4、查找2.5、判断队列 满/空 3、队列的链式实现3.1、初始化3.2、入队3.3、出队 4、双端队列 一、队列 1、队列的定义 2、队列的顺序实现 2.1、初始化 //初始化 void InitQueue(SqQueue &Q…

微信小程序(二十一)css变量-定义页面主题色

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.使用css变量 2.消除按钮白块影响 3.修改图标样式 源码&#xff1a; npmTest.json {"navigationStyle": "custom","usingComponents": {//引入vant组件"van-nav-bar"…