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

 

posted @ 2017-03-10 15:23  Boolean_ln  阅读(606)  评论(0)    收藏  举报