我们之前讲到了SQL注入漏洞是一种非常危险的高危漏洞,攻击者可以利用许多工具轻而易举的获得目标站点后台管理权限,我们也介绍了许多SQL注入利用工具,有网友问我,既然可以使用工具自动注入,为什么还要用手工注入这种效率非常低的方式呢?其实真正的渗透测试高手都是用手工注入的方式进行测试的,这其中最重要的原因就是自动注入工具可能被安全软件认为是攻击行为,会被封IP,手工注入可以很好地避免这种情况,其次呢,有经验的渗透测试人员可以根据自己的经验和目标站点的情况,随时修改注入语句,使得注入成功完成,因此手工注入是渗透测试工作者必备的技能,大家不要过于沉迷于工具的使用。

SQL注入原理

当我们的Web在向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。我们以下面这句SQL语句为例,用户请求以及服务器响应的过程如下:

select * from article where id=36

请求相应过程

SQL注入可能存在的位置

SQL注入可能的位置包括:GET、POST、COOKIE、头部、搜索等,其实我之前也介绍过SQL注入可能的位置,就在我之前发表的《十大常见web漏洞——SQL注入漏洞》中,有兴趣的可以翻看我的这篇文章,下面是这篇文章里的一张SQL注入可能的位置图:

SQL注入可能的位置

Mysql小知识

在进行Mysql数据库手工注入之前,我们必须了解一些Mysql数据库的小知识,下面我总结了一些我们必须要知道的Mysql数据库的小知识。

一个数据库

information_schema数据库是MySQL自带的,它保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。

一张表

在information_schema数据库中的columns表中存储着其他数据库的信息。

三个字段

在columns表中有三个字段,它们是table_schema、table_name、colume_name,这三个字段分别存储着其他数据库的数据库名称、表名、字段名。

几个常用查询

current_user()/user() —— 当前用户/所有用户、database() —— 当前数据库、@@datadir —— 数据库路径、@@version —— 数据库版本、@@hostname —— 服务器主机名等。

几个函数

Mid() —— 获取字符串中一部分、Ord() —— 返回字符串的ASCII的值、Concat() —— 用于连接一个或者多个字符串、Concat_ws() —— 用于连接一个或者多个字符串,第一个为分隔符。

Mysql手工注入流程

Mysql手工注入流程流程为:1确认是否存在注入——2获取数据库信息——3获取当前数据库——4获取数据库表信息——5获取表的字段信息——6获取关键字段内容,下面我们以DVWA为测试环境按照以上步骤,来进行Mysql数据库的手工注入。

1确认是否存在注入

首先我们登陆进入DVWA,首先确定"Security Level: low"为低安全级别,然后点击“SQL Injection”输入框提示我们输入用户ID,我们输入“1”,点击Submit按钮,返回ID为1的用户名为admin,如下图所示:

User ID为1

当我们输入“ ' ”单引号时,就会返回“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1”这样一句SQL语法错误提示,这时就证明存在SQL注入,因为我们所输入的参数被放入到SQL语句中执行了,只是语法存在错误,只要我们构造符合语法的参数,就会返回我们想要的结果,我们可以点击右下角“View Soure”按钮,如下图所示,就可以找到执行的SQL语句:

SELECT first_name, last_name FROM users WHERE user_id = '$id';

当我们输入单引号“ ' ”时,SQL查询语句就会变成如下所示,由于存在语法错误,不会执行的。

SELECT first_name, last_name FROM users WHERE user_id = ''';

执行的SQL语句

2获取数据库信息

当我们确定存在SQL注入点之后,我们就可以构造SQL语句来返回我们想要的信息,首先确认表的字段数,我们可以构造以下参数,直到返回成功,然后再使用user()和database()查询,来获取数据库信息,如下图所示:

' union select 1; -- ';' union select 1,2; -- ';' union select 1,2,3; -- '......

返回数据库信息

3获取当前数据库

由于在第二步我们已经获取了数据库名dvwa,这里我们就不再赘述了,直接下一步。

4获取数据库表信息

到了这一步就需要用到我们之前提到的information_schema数据库中的columns表,在columns表中有三个字段,它们是table_schema、table_name、colume_name,这三个字段分别存储着其他数据库的数据库名称、表名、字段名,我们可以构造以下语句返回所有库中的所有表名,我们重点关注dvwa库下的users表。

' union select table_schema,table_name from information_schema.columns-- '

获取数据库表信息

5获取表的字段信息

这里我们已经获得了dvwa库中的users表,推测它之中存储着用户登录信息,接下来我们获取users表中字段信息,我们可以构造以下语句,我们重点关注user和password两个字段

' union select table_name,column_name from information_schema.columns where table_name='users' -- '

获取users表的字段信息

6获取关键字段内容

现在我们已经获得了dvwa库下的users表中的user和password两个字段,可能存储着用户名和登录密码信息,现在我们获取这两个字段的内容,可以构造以下语句,获取字段内容,如下图所示:

'union select user,password from users;  -- '

获取关键字段user和password内容

这时我们获得的password字段是用MD5加密的,这时我们需要用工具进行进行解密,之前我在《Web渗透测试——密码学基础》一文中提到过MD5加密,我们可以使用在线解密网站:http://www.cmd5.com,进行解密,密码明文为password,至此我们就获得了站点的用户名和密码,就可以登录站点后台了,如下图所示:

MD5解密

以上就是Mysql数据库手工注入的全部内容,感谢阅读,欢迎关注@科技兴了解更多科技尤其是网络安全方面的资讯和知识。

mysql md5解密_Web渗透测试——Mysql数据库手工注入相关推荐

  1. Vulnhub靶场渗透测试系列bulldog(命令注入和sudo提权)

    Vulnhub靶场渗透测试系列bulldog(命令注入和sudo提权) 靶机地址:https://www.vulnhub.com/entry/bulldog-1%2C211/ 下载将其导入VMware ...

  2. Access数据库手工注入

    ACCESS数据库手工注入 access数据库 是一种非常简单但是功能完整的数据库,很适合小型网站创建,可以很轻松管理表和列,有很多管理工具. access数据库结构? access数据库是这么个结构 ...

  3. 某网站安全检测之数据库手工注入

    某网站安全检测之数据库手工注入 一.引子        长夜慢慢,无心睡眠-- 无意中翻到几年前听的一首名为<祖先的阴影>的摇滚,这么长久的历史,混合着许多的罪恶与功绩:这么"灿 ...

  4. mysql udf 一次渗透测试

    最近,我对某金融机构做渗透时发现他们拥有自己的内网,并且后端使用的是MySQL 5.7 64-bit.根据以往的经验,我的合作伙伴大多都使用的是MSSQL,因此在我看来这是一个非常罕见的场景.我在we ...

  5. mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)

    jdbc测试mysql数据库sql预解析(绑定变量) 用习惯了oracle,学习mysql,想测试一下mysql绑定变量的效果.以前看网上介绍大部份都说mysql没有sql共享池的概念,所以也不存在s ...

  6. loadrunner mysql性能测试_运用Loadrunner测试Mysql数据库性能 TRON•极客

    1.前言 针对数据库的性能测试,loadrunner本身支持sql server和oracle数据库,这两种数据库可以用loadrunner直接录制进行测试.而我们项目中使用的是mysql数据库,针对 ...

  7. mysql文件解密软件下载_SQL Extractor 数据库解密修复大师

    SQL Extractor 数据库解密修复大师是超好用的SQL数据库修复解密软件,支持全系列SQL数据库版本(包括如:7.0.2000.2005.2008.2008R2.2012.2014.2016. ...

  8. mysql盲注_Mysql 布尔型盲注手工注入详解

    0x00 什么叫布尔型盲注 布尔型 布尔(Boolean)型是计算机里的一种数据类型,只有True(真)和False(假)两个值.一般也称为逻辑型. 盲注 在注入时页面无具体数据返回的注入称之为盲注, ...

  9. mysql性能测试工具msyqlslap_mysqlslap工具测试mysql DB的性能

    mysqlslap的一个主要工作场景就是对数据库服务器做基准测试. 测试方法 1.测试工具:mysqlslap,mysqlslap是MySQL5.1.4之后自带的benchmark基准测试工具,该工具 ...

最新文章

  1. jquery 监听的案例
  2. C++标准库中sstream和strstream的区别
  3. jsp自定义标签学习
  4. iOS - OC - XML 解析 - NSXMLParser
  5. 以下可以采用python语言保留字的是-以下哪个选项不是Python语言的保留字?_学小易找答案...
  6. MongoDB 查询时间差问题修复
  7. smartgwt_SmartGWT入门,提供出色的GWT界面
  8. 抹掉所有内容和设置 macOS Monterey这个新功能太好用
  9. [C++基础]039_C++异常处理初级出门+中级进阶
  10. 文本分类pytorch Bert fine tune
  11. c 自定义实现string类 clear_JVM类加载器是否可以加载自定义的String
  12. 计算机应用程序设计师,2018年上半年软件设计师真题+答案解析上午选择+下午案例完整版(全国计算机软考).pdf...
  13. 如何根据论文文章名称一键查询该篇论文的引用格式?
  14. 求助vscode格式化插件beautify的用法
  15. 二叉查找树(BST)的基本概念及常用操作
  16. 基于多二维码识别的无人机运动真值获取
  17. 开源安卓Android流媒体音视频播放器实现声音自动停止、恢复、一键静音功能源码
  18. 毕业四年后一次同学聚会-性格决定命运
  19. http://www.prayer-laputa.com/blog/archives/588
  20. SWIFT国际资金清算系统

热门文章

  1. 网上看到的,关于测试用例编写粒度准则
  2. A+B for Input-Output Practice (I)
  3. 图片添加对话气泡app_微信公众号、对话框、看一看功能又更新!儿童版微信也要来了?!...
  4. android 模糊组件,Android实现局部模糊效果
  5. Linux求100内的质数,用SQL计算100以内的质数
  6. linux fortran 内存不足,内存不够不用怕! 虚拟内存不足的十种解决办法
  7. 可编辑杂志模板|简单的得到一个完整的杂志预先设计版式
  8. 美食合成海报,脑洞开得有点Hold不住!!
  9. UI实用|素材APP启动图标设计模板
  10. mysql中密码存入加密,如何在数据库中存储加密的密码?