《sql注入攻击与防御 第2版》的总结 之 如何确定有sql注入漏洞

看完《sql注入攻击与防御 第2版》后,发现原来自己也能黑网站了,就一个字:太爽了。

简单总结一下入侵步骤:

  1、确定是否有sql注入漏洞

  2、确定数据库类型

  3、组合sql语句,实施渗透

  4、获取最高权限后,想怎么玩就怎么玩

学习sql注入漏洞,需要的材料:

  浏览器           X1

  wamp集成包  X1

  php脚本一个  X1

  数据库一个     X1

  

  php脚本内容:

 1  <?php
 2      //获取数据
 3      $id= empty($_GET[‘id‘])?"NULL":$_GET[‘id‘];
 4      $name= empty($_GET[‘name‘])?"NULL":$_GET[‘name‘];
 5      //连接数据库
 6      $connect = mysql_connect(‘localhost‘,‘root‘,‘123456‘);
 7      //选择数据库
 8      mysql_select_db(‘new‘,$connect);
 9      //组合sql语句
10      $sql = "SELECT * FROM one where id={$id} or name=‘{$name}‘";
11      //执行sql语句
12      $result = mysql_query($sql);
13      //显示数据结果
14      while ($row = mysql_fetch_array($result)) {
15          echo "<pre>";
16          print_r($row);
17          echo "</pre>";
18      }

  创建数据库和数据表

1 --创建数据库
2 Create databases if exists new;
3 --创建数据表
4 create table one(
5     id int not null auto_increment primary key,
6     name varchar(10) not null,
7     pwd varchar(10) not null,
8     price int not null
9 )engine=myisam default charset=utf8;

 以下将用5种方法判断是否有sql注入漏洞

  1、根据运算符判断

  2、根据连接字符串判断

  3、根据内联sql判断

  4、根据sql注释符判断

  5、根据时间延迟判断

以下例子是判断是否有sql注入的测试。

一、根据<运算符>判断是否有sql漏洞。实现步骤如下:

  正常运行流程:

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=1 or name=‘NULL‘

    2、查看浏览器输出结果,将发现id为1的数据被输出

  非正常运行流程,使用运算符:

    1、在浏览器输入地址

       

      Sql语句:SELECT * FROM one where id=4-1 or name=‘NULL‘

    2、查看浏览器输出结果,将发现id为3的数据被输出。因为sql执行了4-1的运算了。

二、根据<字符串>判断是否有sql漏洞。实现步骤如下:

  正常运行流程:

   1、在浏览器输入地址

       

      Sql语句:SELECT * FROM one where id=NULL or name=‘hello‘

    2、查看浏览器输出结果,将发现name为hello的数据被输出

  非正常运行流畅,使用字符串连接

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=NULL or name=‘he‘ ‘llo‘

    2、查看浏览器输出结果,将发现name为hello的数据被输出。因为sql执行了:字符串连接操作。

三、根据<字符串内联>判断是否有sql注入漏洞。实现步骤如下:

  正常运行流畅:

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=NULL or name=‘hello‘

    2、查看浏览器输出结果,将发现name为hello的数据被输出。

  非正常运行流程:

    1、在浏览输入地址

      

      Sql语句:SELECT * FROM one where id=NULL or name=‘he‘ ‘llo‘ or ‘1‘=‘1‘

    2、查看浏览器输出结果,将发现所有数据被输出。

四、使用<sql的注释符号>判断是否有sql输入漏洞

  正常运行流程:

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=3 or name=‘NULL‘

    2、查看浏览器输出结果,将发现id为3的数据被显示出来

  非正常运行流程:

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=3-- or name=‘NULL‘

    2、查看浏览器输出结果,将发现id为3的数据被显示出来

五、使用<时间延迟>判断是否有sql注入漏洞

  正常运行流程:

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=3 or name=‘NULL‘

    2、查看浏览器输出结果,将发现id为3的数据被显示出来

  非正常运行流程:

    1、在浏览器输入地址

      

      Sql语句:SELECT * FROM one where id=3 or sleep(10) or name=‘NULL‘

    2、这时浏览器返回结果,会有明显的延迟

备注:该测试用到的数据库为mysql数据库,sql语句都是针对mysql。其他数据库的测试方式大同小异,只要思路正确就一切ok。

备注:sqlmap工具听说挺不错,可以试试。

时间: 2024-10-11 19:26:18

《sql注入攻击与防御 第2版》的总结 之 如何确定有sql注入漏洞的相关文章

电子书 SQL注入攻击与防御.pdf

SQL注入攻击是一种已经长期存在,但近年来日益增长的安全威胁,<安全技术经典译丛:SQL注入攻击与防御(第2版)>致力于深入探讨SQL注入问题. <安全技术经典译丛:SQL注入攻击与防御(第2版)>前一版荣获2009Bejtlich图书奖,第2版对内容做了全面更新,融入了一些的研究成果,包括如何在移动设备上利用SQL注入漏洞,以及客户端SQL注入等. <安全技术经典译丛:SQL注入攻击与防御(第2版)>由一批SQL注入专家编写,他们对Oracle.SQLServer.M

安全性测试入门(二):Command Injection命令行注入攻击和防御

安全性测试入门(二):Command Injection命令行注入攻击和防御 本篇继续对于安全性测试话题,结合DVWA进行研习. Command Injection:命令注入攻击. 1. Command Injection命令注入 命令注入是通过在应用中执行宿主操作系统的命令,来达到破坏目的的一种攻击方式.如果我们的应用程序将不安全的用户输入传递给了系统命令解析器(shell),那么命令攻击就有可能发生. 通常来说,由应用程序传递操作系统命令会赋有和应用一样的权限,所以如果没有合理防御机制会给系

SQL注入攻击和防御

什么是SQL注入? 简单的例子, 对于一个购物网站,可以允许搜索,price小于某值的商品 这个值用户是可以输入的,比如,100 但是对于用户,如果输入,100' OR '1'='1 结果最终产生的sql, SELECT * FROM ProductsTbl WHERE Price < '100.00' OR '1' = '1' ORDER BY ProductDescription; 这样用户可以获取所有的商品信息 再看个例子, 对于用户身份认证,需要输入用户名和密码 但是如果用户在密码里面加

XXE注入攻击与防御

0x00 前言 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进?行处理时引发的安全问题. 在XML1.0标准?里,XML文档结构?里定义了实体(entity)这个概念.实体可以通过预定义在文档中调用,实体的标识符可访问本地或远程内容.如果在这个过程中引入了”污染”源,在对XML文档处理后则可能导致信息泄漏等安全问题. 0x01 威胁 XXE漏洞目前还未受到广泛关注,Wooyun上几个XXE引起

《SQL必知必会(第4版)》中英文PDF及代码+《SQL进阶教程》中文PDF及代码 (学习总结)

下载:https://pan.baidu.com/s/1hRb-TS_R-0fnXPodS5OoDg <SQL必知必会(第4版)>高清中文PDF+高清英文PDF+代码 下载:https://pan.baidu.com/s/11-MnDu0khzwO4tiJqHznnA <SQL进阶教程>高清中文PDF+源代码 <SQL必知必会(第4版)>高清中文PDF+高清英文PDF+代码 高清中文PDF,258页,带书签目录,文字可以复制粘贴:高清英文PDF,497页,带书签目录,文

sql注入攻击与防御第二版读书笔记二——SQL注入测试

寻找SQL注入 该阶段的主要目标是识别服务器响应中的异常并确定是否由SQL注入漏洞产生,随后确定在服务器端运行的SQL查询的类型(select,update,insert或delete),以及将攻击代码注入查询中的位置(比如from,where或者order by等) 我们需要关注:get,post,cookie,host,referer,useragent. 理解并利用SQL注入漏洞所涉及的主要技术包括:在心里重建开发人员在Web应用中编写的代码以及设想远程SQL代码的内容.如果能想象出服务器

sql注入攻击与防御第二版读书笔记二——SQL盲注利用

寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场景 提交一个错误查询时会返回一个通用错误页面,而提交正确的查询会返回一个内容可被适度控制的页面 提交一个错误查询时会返回一个通用错误页面,而提交正确的查询会返回一个内容不可被控制的页面 提交一个错误查询时不会影响,但是可能基于时间或者其他副作用 SQL盲注技术 推断攻击技术 len() 判断长度 subs

CSRF、XSS、clickjacking、SQL 的攻击与防御

CSRF攻击 原理: 跨站请求伪造.是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 网站通过cookie来实现登录功能.而cookie只要存在浏览器中,那么浏览器在访问含有这个cookie的服务器的时候,会自动的携带cookie信息到服务器上去.就会存在一个漏洞:当你访问了一个病毒网站时,该网站可以在网页源代码中插入js代码,使用js代码给其他服务器发送请求(如ICBC的转账请求).因为在发送请求的时候,浏览器会自动的把cookie发送给对应的服务器,这时候相应的服务器

web前端安全之SQL注入攻击

一.SQL注入攻击的原理攻击者在HTTP请求中注入恶意的SQL代码,并在服务端执行.比如用户登录,输入用户名camille,密码 ' or '1'='1 ,如果此时使用参数构造的方式,就会出现 select * from user where name = 'camille' and password = '' or '1'='1' 不管用户名和密码是什么,查询出来的用户列表都不为空,这样可以随意看其他用户的信息. 二.SQL注入攻击的防御1.客户端 限制字符串输入的长度: 有效性检验. //过