计算机, 程序设计
什么是SQL注入?
网站和网页时的数量正在稳步增长。 采取所有这些谁能够发展。 和新手的Web开发人员经常使用不安全的和旧的代码。 它创造了很多漏洞的罪犯和黑客。 比他们。 其中最经典的漏洞 - SQL注入。
理论的一个位
很多人都知道,大多数网络上的网站和服务的使用SQL数据库存储。 这是一个 结构化查询语言 ,允许您控制和管理数据的存储。 有许多不同版本的数据库管理系统的数据库 - 甲骨文,MySQL和Postgre。 无论名称和类型,它们使用相同的查询数据。 正是在这里,位于潜在的漏洞。 如果开发商未能妥善处理和安全要求,攻击者可以利用这一点,并使用特殊的战术来访问数据库,然后 - 和所有的现场管理。
为了避免这样的情况下,则需要适当地优化代码,并在其中请求正被处理的方式密切监测。
检查SQL注入
建立在网络中的一个漏洞的存在具有完成自动软件系统的重量。 但它是可以手动进行简单的检查。 要做到这一点,到考点之一,并在地址栏中尝试导致数据库错误。 例如,该网站上的脚本不能处理该请求并没有修剪它们。
例如,存在nekiy_sayt /的index.php?编号= 25
最简单的办法 - 把25报价后发送请求。 如果发生了,无论是在现场和过滤器没有错误的所有请求都会正确处理,或者在它们的输出的设置被禁用。 如果一个页面与问题重新加载,则该漏洞的SQL注入。
之后,她发现了,你可以尝试摆脱它。
要实现此漏洞需要知道一点关于 SQL查询的球队。 其中之一 - UNION。 这几个查询结果汇集成一片。 因此,我们可以计算表中的字段的数量。 示例首先查询:
- nekiy_sayt /的index.php?ID = 25 UNION SELECT 1。
在大多数情况下,这个记录应该产生一个错误。 这意味着场的数目不等于1。因此,在选择的1或更大的选项,可以建立他们的确切数目:
- nekiy_sayt / index.php文件?ID = 25 UNION SELECT 1,2,3,4,5,6。
也就是说,当将不再出现该错误,这意味着字段数猜测。
还有一个替代的解决这个问题。 例如,当大量的字段 - 30,60或100。此命令GROUP BY。 这组基于任何理由的查询,例如ID的结果:
- nekiy_sayt /的index.php?ID = 25 GROUP BY 5。
如果没有收到错误,然后等领域5个以上。因此,从一个相当宽的范围内代选择,就可以计算出有多少人实际。
这个例子SQL注入 - 谁想要试试自己在其网站上的测试初学者。 重要的是要记住,刑法的另一个可用的文章未经授权的访问是非常重要的。
主要类型的注射
实现在若干实施通过SQL注入漏洞。 接下来是最常用的方法:
该UNION 查询的SQL 注入。 这种类型的一个简单的例子已经在上面检查。 这是由于在检查输入数据,这是不过滤的错误来实现。
错误基于SQL注入。 顾名思义,这种类型还采用了错误,发送组成语法不正确的表达式。 再有就是响应报头,分析其可以进行以后的SQL注入的拦截。
堆叠 查询SQL 注入。 此漏洞是通过执行连续请求来确定。 它的特点是通过加入在符号的末尾“;”。 这种方法通常实施访问的读取和写入数据或操作系统功能的实现,如果权限允许它。
软件搜索SQL的漏洞
是否有SQL注入,该程序通常由两个部分组成 - 一个网站扫描可能存在的漏洞,并利用它们来访问数据。 有一些工具用于几乎所有已知的平台。 它们的功能极大的方便了检查网站,以破解你的SQL注入。
SQLMAP
非常强大的扫描仪,与大多数数据库工作。 它支持执行SQL注入的各种方法。 它具有自动识别密码哈希破解和字典的类型的能力。 现在和功能文件上传和下载从服务器。
使用命令执行在Linux上安装:
- 混帐克隆https://github.com/sqlmapproject/sqlmap.git的SqlMap-dev的,
- cdsqlmap-dev的/,
- ./sqlmap.py --wizard。
对于Windows可作为与命令行和图形用户界面的一个选项。
JSQL注射
JSQL注射 - 用于测试使用SQL安全漏洞的跨平台工具。 用Java编写的,所以系统必须安装JRE。 能够处理GET请求,POST,头,饼干。 它有一个方便的图形界面。
该软件包的安装如下:
wget的https://github.com/`curl -s HTTPS://github.com/ron190/jsql-injection/releases | 的grep-E -o“/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] 。{1,2} [0-9] {1,2}的.jar“| 头-N 1`
发射是通过使用命令Java的罐子./jsql-injection-v*.jar
为了启动对SQL的漏洞测试网站,你需要在顶部字段中输入地址。 他们是独立的GET和POST。 有了一个积极的结果,可用表的列表会出现在左边窗口。 您可以查看并了解一些机密信息。
标签«管理页面»用于查找管理面板。 它通过特殊的模板来自动搜索系统记录特权用户。 从他们身上,你可以得到的只是密码散列。 但他在节目中的工具箱。
发现所有的漏洞和注入必要的询问后,该工具将允许服务器填写您的文件,或者反过来,从那里下载。
SQLI自卸车V.7
这一方案 - 易于使用的工具,寻找和实现SQL漏洞。 它产生的联合国是基于所谓的多卡斯。 他们的名单可以在互联网上找到。 Dorca对于SQL注入 - 这是搜索查询的特殊的模板。 有了他们的帮助,你可以找到通过任何搜索引擎可能存在漏洞的网站。
工具培训
Itsecgames.com在现场有一组特殊的工具,允许示例显示了如何做SQL注入和测试。 为了利益,就必须下载和安装。 该档案包含了一组文件,这是该网站的结构。 要安装它,将需要设置Apache Web服务器,MySQL和PHP的现有系统。
解压在一个Web服务器文件夹归档,你必须去安装这个时输入的地址软件。 具有用户注册的页面。 在这里,你需要输入你的信息,然后点击«创建»。 移动用户到一个新的屏幕,系统会提示您选择的测试案例之一。 其中既有通过注射,和许多其他测试项目描述。
这是值得考虑的SQL注入式GET /搜索的例子。 在这里,你需要选择它,然后单击«哈克»。 之前,用户会出现,和电影网站的搜索字符串模仿。 要排序的电影会很长。 但只有10。例如,你可以尝试进入铁人。 这将指示电影,那么该网站的作品,它包含的表。 现在我们就来检查,如果特殊字符脚本过滤器,尤其是报价。 要做到这一点,在地址栏中添加”。“ 此外,这必须在影片的标题之后进行。 该网站会给出错误错误:你在你的SQL语法错误; 检查对应于你的MySQL服务器版本在1号线,其中指出,字符依然没有被正确处理使用近“%””正确的语法手册。 所以,你可以尝试替换您的要求。 但是,我们必须首先计算领域的数量。 和行动=搜索 - 由2 http://testsites.com/sqli_1.php?title=Iron+Man“顺序:它被用于通过该顺序,这是引号之后引入。
该命令仅显示有关膜,即,场的数目大于2的双连字符告诉其他请求必须被丢弃的服务器的信息。 现在,我们要弄清楚,把日益增加的重要性,只要不打印错误。 最后,事实证明,该领域将是7。
现在是时候得到一些有用的东西出了基地。 将略微修改请求在地址栏中,将它带到一种形式:http://testsites.com/sqli_1.php?title=Iron+Man工会选择1,数据库(),用户(),4,密码,6, 7从用户 - &行动=搜索。 由于它的实施将显示与密码哈希值,可以很容易地转换成使用的在线服务之一可以理解的符号串的结果。 一个编造了一点,拿起一个字段名与登录,您可以访问别人的条目,如网站管理员的。
该产品具有重量种喷射方式,可以用来实践。 应该记住的是,这些技能上的真实网站网络中的应用可能是一种刑事犯罪。
注入和PHP
作为一项规则,在PHP代码,负责来自用户必要的处理请求。 因此,在这个层面,你需要建立针对SQL注入的PHP辩护。
首先,让我们给一些简单的指导,其中有必要做这样的基础上。
- 数据总是必须被放置到数据库中之前被处理。 这可以通过使用现有的表达,或通过手动查询组织来完成。 在这里,也应考虑到该数字值被转换为所需要的类型;
- 避免提示各种控制结构。
现在介绍一下在MySQL编译查询,以防止SQL注入的规则。
在制订任何表达式查询它来将数据从SQL关键字分别是非常重要的。
- SELECT * FROM表WHERE名称=虫族。
在这种配置中,该系统可能会认为虫族 - 任何字段的名称,所以你需要放在引号。
- SELECT * FROM表WHERE名称= '虫族'。
然而,有些时候,价值本身包含引号。
- SELECT * FROM表WHERE name = '科特迪瓦'。
这里只处理科特迪瓦的一部分,其余部分可被视为一个团队,这当然不是。 因此,就会发生错误。 然后,你需要这种筛选的数据。 要做到这一点,使用反斜杠 - \。
- SELECT * FROM表WHERE name = '猫-D \' 瓦”。
所有上述指行。 如果行动发生了一些的话,就不需要任何报价或斜线。 然而,他们应该被要求强行导致所需的数据类型。
有迹象表明,字段名必须包含在反引号的建议。 该标志是在键盘的左侧,与波浪一起“〜”。 这是为了确保MySQL的可能准确地从您的关键字区分字段的名称。
数据工作动态
很多时候,从使用的查询数据库,动态生成的任何数据。 例如:
- SELECT * FROM表WHERE编号= '$号'。
这里,变量$号码作为确定字段的值通过。 会发生什么,如果它得到“科特迪瓦”? 错误。
为了避免这种麻烦,当然,你可以包括“魔术引号”设置。 但现在的数据都将被屏蔽在必要和没有必要的。 此外,如果代码是手写,你可以花多一点时间来创建开裂系统本身抵抗力。
对于独立添加斜线都可以使用mysql_real_escape_string。
$总数= mysql_real_escape_string($号);
$ =年mysql_real_escape_string($年);
$查询= “INSERT INTO表(数,年份,班级)VALUES( '$号', '$年',11)”。
虽然代码和体积增大,但可能它会工作更安全。
占位符
占位符 - 一种标志物用于该系统识别出这是你需要替换一个特殊功能的地方。 例如:
$沙爹= $ mysqli->准备( “SELECT区,距离数,其中名称=?”);
$ Sate-> bind_param( “S”,$号);
$ Sate->执行();
这部分代码需要的训练请求模板,然后结合可变数目,并执行它。 这种方法允许你将查询处理和其执行情况。 因此,它可以从使用恶意代码保存在SQL的。
攻击者可能
保护系统 - 一个非常重要的因素,这是不能被忽略。 当然,简单的名片网站会更容易恢复。 如果它是一个大的门户网站,服务,论坛? 后果是什么,如果你不考虑安全性?
首先,黑客可以打破这两个基地的完整性和彻底删除。 而如果网站管理员或托管商不进行备份,你将有艰难的时刻。 首先,一个入侵者,破解一个单一的网站,可以去其他张贴在同一台服务器。
其次是游客的个人信息被盗。 如何使用 - 只有通过黑客的想象力是一切限制。 但在任何情况下,后果会不会很愉快。 特别是如果包含财务信息。
此外,攻击者可以自己合并数据库,然后勒索钱财其返回。
代表网站管理员的误传用户,他们不是人,也可以尽可能的欺诈事实的消极后果。
结论
提供的信息仅供参考本文中的所有信息。 只使用它需要测试自己的项目,当它检测到的漏洞和解决这些问题。
对于如何进行SQL注入技术进行更深入的研究,有必要先从SQL语言的实际研究能力和功能。 由于编译查询,关键字,数据类型,以及使用的这一切。
也离不开理解PHP和HTML元素功能的操作。 的主要用途为注射脆弱点 - 的地址线,以及各种搜索字段。 学习PHP功能,实现和功能的方法找出如何避免错误。
许多现成的软件工具的存在允许在网站上已知的漏洞进行了深入分析。 其中最畅销的产品 - 卡利Linux操作系统。 基于Linux的操作系统,它包含了大量的工具和程序,可以进行现场实力综合分析此图像。
你需要知道如何破解网站是什么? 这很简单 - 这是必要了解你的项目或网站的潜在漏洞。 尤其是如果它是一个在线商店与网上支付,其中支付用户数据可以被攻击者破坏。
对于现有信息安全人员的专业研究将能够检查出网站的各种标准和深度。 从一个简单的HTML的注射和社会工程学和钓鱼开始。
Similar articles
Trending Now