注入攻击
文章目录
前言
- 安全设计原则“数据与代码分离”原则,可以说就是专门为了解决注入攻击而生的。
- 注入攻击代指一类攻击,它们通过注入数据到一个网络应用程序以期获得执行,亦或是通过非预期的一个方式来执行恶意数据。
本质
- 注入攻击的本质,就是把用户输入的数据当做代码执行。
实现注入攻击的两个关键条件(重点)
- 第一个:用户能控制输入——用户能控制输入变量
- 第二个:原本程序要执行的代码,拼接了用户输入的数据。(正是拼接的这个过程导致了代码的注入)
一、盲注
1 、盲注出现原因
- 在SQL注入过程中,如果网站的Web服务器开启了错误回显,则会为攻击者提供极大的便利,为了防止被攻击者利用,网站管理者会关闭错误回显功能。
2、什么是盲注?
- 简而言之就是在服务器没有错误回显时完成的注入攻击。
- 服务器没有错误回显,对于攻击者来说缺少了非常重要的“调试信息”,所以攻击者必须找到一个办法来验证注入的SQL语句是否得到执行。
3、常见的盲注验证方法
- 构造简单的条件语句,根据返回页面是否发生变化,来判断SQL语句是否得到执行。利用返回出来的web页面差异,对我们的注入语句进行判断,比如使用1=1与 1=2 、被0除这种故意营造错误
- 如果页面没有差异,那么就可以使用时间延迟的注入,设定我们SQL语句如果执行了就晚点返回页面,可以有效判断
- 如果上面的技术都没有用,那就剩下BurpSuite的技术:OAST了,这个技术是在Burp Collaborator Client里面的。这个原理大致是,如果语句有效,它会返回给我们的Burp Collaborator Client一些报文,这个相当于DNS服务器一样。
二、数据库攻击技巧
- SQL注入是基于数据库的一种攻击。不同的数据库有着不同的功能、不同的语法和函数,因此针对不同的数据库,SQL注入的技巧也有所不同。
1、常见的攻击技巧
- sql注入猜解出数据库的对应版本
- 利用union select来分别确认表名admin是否存在,列名passwd是否存在,想要猜解出username和passwd具体的值,可以通过判断字符的范围,一步步读出来。
- 在注入攻击的过程中&