《web安全原理分析与实践》–SQL注入漏洞思考题
1、SQL注入的原理是什么?
攻击者通过浏览器等将恶意SQL语句插入到网站参数中,而网站应用程序未对其过滤,将SQL语句执行,从而获得数据库敏感数据等。
2、SQL注入有几种分类?
按数据类型分:数字型注入 、字符型注入
按服务器返回信息分:报错注入 、盲注
按Mysql数据库分:联合查询注入 、bool注入、sleep注入、宽字节注入、floor注入、updatexml注入、extractvalue注入
其中 bool注入、sleep注入属于盲注
floor注入、updatexml注入属于报错注入
oracle数据库注入
SQL Server数据库注入(报错注入 )
Access数据库注入(爆破法注入)
二次注入
3、如何判断是否存在SQL注入漏洞?
数字型:①输入:’,返回不正常
②输入:and 1=1,返回正常
③输入:and 1=2返回不正常
–》存在数字型SQL注入
字符型:①输入:’,返回不正常
②输入:’ and ‘1’=’1,返回正常
③输入:’ and ‘1’=’2返回不正常
–》存在字符型SQL注入
4、SQL联合查询注入的原理是什么?
利用union可以同时执行多条SQL语句的特点,在参数中插入恶意SQL注入语句,同时执行两条语句,获取数据库敏感数据等。
5、SQL的bool注入的原理是什么?
bool注入是盲注的一种,没有任何报错信息输出,页面只有正常和不正常两种状态,攻击者通过这两种状态判断输入的SQL注入测试语句是否正确,从而判断数据库中存储了哪些信息。
6、SQL的sleep注入的原理是什么?
sleep注入是盲注的一种,没有任何报错信息输出,攻击者通过页面的返回时间来判断数据库中存储了哪些信息。
7、SQL的floor注入的原理是什么?
floor注入是报错注入的一种,主要原因是rand函数与group by字句一起使用时,rand函数会计算多次,会导致报错注入的产生。
8、SQL的updatexml注入的原理是什么?
updatexml注入是报错注入的一种,它利用updatexml函数的第二个参数XPath_string的报错进行注入。XPath_string是XML文档路径,格式是/×××/×××/×××/,如果格式不正确就会报错。
9、SQL的宽字节注入的原理是什么?
Mysql在使用GBK编码的时候,如果第一个字符的ASCII码大于128,会认为前两个字符是一个汉字,会将后面的转义字符\“吃掉”,将前两个字符拼接为汉字,这样就可以将SQL语句闭合,造成宽字节注入。
10、Mysql数据库中的information_schema库中有哪些重要的表?分别代表什么?
SCHEMATA表:存储着所有数据库名
TABLES表:保存了所有数据库的表名
COLUMNS表:保存了所有表的列名
11、Oracle数据库中有哪些重要的数据字典视图?分别代表什么?
user_tables表:保存所有表的信息
user_tab_columns表:保存所有列的信息
dual表:是oracle数据库真实存在的表,任何用户均可读取
12、常见的SQL注入绕过方式有哪些?
①空格过滤绕过:
—“/* */” (注释符)代替空格
—“%09” (制表符,URL编码)代替空格
—“%0a” (换行符,URL编码)代替空格
—反引号代替空格
—利用括号绕过空格过滤
②内联注释绕过:/*! */
③大小写绕过:select->seLeCt
④双写关键字绕过:select->seselectlect
⑤编码绕过
—双重URL编码绕过
—十六进制编码绕过
—Unicode编码绕过
—ASCII编码绕过
⑥等价函数字符替换绕过
—like或in代替:=
—逗号过滤
—sleep()用benchmark()代替
—ascii()用hex()、bin()代替
—group_concat()用concat_ws()代替
—updatexml()用extractvalue()代替
13、SQL注入的修复方式有哪些?
代码层面:
—数字型注入漏洞:用intval函数进行强制数据转换来修复
—字符型注入漏洞:用htmlspecialchars函数、MySQL_real_escape_string函数、addslashes 函数进行特殊字符转换来修复
服务器配置修复:
—设置magic_quotes_gpc为on
本文探讨了SQL注入的原理、分类、检测方法及重要概念,包括数字型与字符型注入、报错注入与盲注,还有Mysql、Oracle等数据库的相关特性。此外,还列举了SQL注入的常见绕过技巧和修复措施。
3674

被折叠的 条评论
为什么被折叠?



