SQL注入
SQL注入原理:程序员在编写代码 的时候,没有对用户输入数据的合法性进行判断 ,使应用程序存在安全隐患。用户可以提交一段 数据库查询代码,根据程序返回的结果,获得某 些他想得知的数据或进行数据库操作。是发生于 应用程序之数据库层的安全漏洞。简而言之,是 在输入的字符串之中注入SQL指令,在设计不良的 程序当中忽略了检查,那么这些注入进去的指令 就会被数据库服务器误认为是正常的SQL指令而运 行,因此遭到破坏或是入侵。
测试方式:最简单的测试方式:1. http://www.xxx.com/paper.php?id=1’
2. http://www.xxx.com/paper.php?id=1’and ‘1’=‘1
3. http://www.xxx.com/paper.php?id=1’and ‘1’=
在id参数的后面分别添加以上的内容会发生什么? 我们可以发现我们通过精心构造的语句发送给后台,然后 后台将我们的语句拼接成SQL语句执行从而达到了控制返 回后台返回的结果,我们可以进一步构造语句,来查询我 们想要的结果,甚至是在数据库中插入木马。
不同类型的注入方式: 数字型注入: 1. http://www.xxx.com/paper.php?id=1’ 2. http://www.xxx.com/paper.php?id=1 and 1=1 3. http://www.xxx.com/paper.php?id=1 and 1=2
后台SQL语句: 1. SELECT * FROM paper where id = 1’ 2. SELECT * FROM paper where id = 1 and 1=1 3. SELECT * FROM paper where id = 1 and 1=2 1和3请求返回错误或者异常,2请求返回正常
字符型注入: 1. http://www.xxx.com/paper.php?id=car’ 2. http://www.xxx.com/paper.php?id=car’and ’1’=‘1 3. http://www.xxx.com/paper.php?id=car’and ‘1’=‘2
后台SQL语句: 1. SELECT * FROM paper where id = car’ 2. SELECT * FROM paper where id = car’and ‘1’=‘1 3. SELECT * FROM paper where id = car’and ‘1’=‘2 1和3请求返回错误或者异常,2请求返回正常
搜索型注入: 1. http://www.xxx.com/paper.php?id=car%’and ‘%’=‘ 2. http://www.xxx.com/paper.php?id=car%’and ‘’=‘
后台SQL语句: 1. SELECT * FROM paper where id like‘%car%’and ‘%’=‘%’ 2. SELECT * FROM paper where id like %car%’and ‘’=‘%’ 1请求会返回正常的搜索结果,2请求返回的搜索 结果为空
判断注入方式: 内联式SQL注入:内联注入是指查询注入SQL代码 后,原来的查询仍然全部执行,通过and或者or构 造闭合的完整的永正或者永假的SQL语句判断注入 方式。
终止式SQL注入:终止式SQL语句注入是指攻击者 在注入SQL代码时,通过注释剩下的查询来成功结 束该语句。被注释的查询不会被执行。
注入点: 所有的输入只要和数据库进行交互的,都有可能 触发SQL注入。
常见的包括: 1. GET参数 2. POST参数 3. Cookie参数 4. 常见的HTTP请求头 5. 其他参与sql执行的输入都有可能进行SQL注入
识别数据库类型 1.常见架构识别数据库类型 • asp + access • asp + mssql • asp.net + mssql • php + mysql • Jsp + oracle • Jsp + mysql
2.根据报错信息判断数据库类型 如何利用漏洞
3.通过特有数据表进行判断 MySQL : information_schema SQL Server : sysobjects Access : msysobjects Oracle : sys MySQL : http://www.xxx.com/test.php?id=100 and (select count(*) from information_schema. TABLES)>0 and 1=1
4.通过不同数据库的字符串连接符判断 MySQL : ‘1’ ‘1’=‘11’ SQL Server : ‘1’+ ‘1’=‘11’ Oracle : ‘1’|| ‘1’=‘11’ MySQL : http://www.xxx.com/test.php?id=100 and ‘1’+’1’=‘11’
Burpsuite工具使用: http://www.2cto.com/article/201406/310929.html

浙公网安备 33010602011771号