白帽子讲web安全

来源:互联网 发布:我在回忆里等你 知乎 编辑:程序博客网 时间:2024/04/24 17:09

第7章 注入攻击

注入攻击的本质,是把用户输入的数据当做代码执行。

这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

7.1 SQL注入

​ 在SQL注入的过程中,如果网站的Web服务器开启了错误回显,则会为攻击者提供极大的便利,比如在参数中输入一个单引号,引起执行查询语句的语法错误,服务器直接返回了错误信息。

​ 错误回显披露了敏感信息,对于攻击者来说,构造SQL注入的语句就更加得心应手了。

7.1.1 盲注

​ 所谓“盲注”,就是在服务器没有错误回显时完成的注入攻击。服务器没有错误回显,对于攻击者来说缺少了非常重要的“调试信息”,所有必须找到一个方法来验证注入的SQL语句是否得到执行。

​ 1. 最常见的盲注验证方法是,构造简单的条件语句,根据返回页面是否发生变化,来判断SQL语句是否得到执行。

​ 比如:and 1=2 and 1=1

​ 盲注的工作原理:服务器虽然关闭了错误回显,但是攻击者通过简单的条件判断,再对比页面返回结果的差异,就可以判断出SQL注入漏洞是否存在。

7.1.2 Timing Attack

​ 通过时间长短的变化,可以判断注入语句是否执行成功。这是一种边信道攻击,这个技巧在盲注中被称为Timing Attack。

​ MySQL中,用到的函数常用的有:benchmark()函数,sleep()函数

​ Timing Attack 是盲注的一种高级技巧。在不同的数据库中,都有着类似与benchmark()的函数,可以被利用。更多类似的函数,可以查阅每个数据库软件的手册。

SQL注入中的 读写文件的用法

如果当前用户具有写权限,那么攻击者还可以将信息写入本地磁盘中。

要求当前数据库用户有读写系统相应文件或目录的权限。

load_file()读取系统文件

select load_file(’/etc/passwd’);

into dumpfile将文件写入系统中

写入一个webshell:

into outfile:

select “

7.2 数据库攻击技巧

上面讲到的是找到SQL注入漏洞,仅仅是一个开始。

7.2.1 常见的攻击技巧

​ 猜解法:

常见SQL函数,语句

database() //数据库名

version() //版本

substring(str,pos,len) //截取字符串,参数(字符串,开始位置,截取长度)

union select //联合查询语句

7.2.2 命令执行

利用“用户自定义函数”的技巧,即UDF来执行命令。

在流行的数据库中,一般都支持从本地文件系统中导入一个共享库文件作为自定义函数。

原创粉丝点击