每日F&Q(2017.3.6)


sql注入

web发展史&产生SQL注入过程:

一开始的web页面只是静态页面,需求是向用户展示内容。

web的功能越来越强,更像是一个软件,有自己的数据库,可以接受用户的输入。

web慢慢发展出与用户有更多的交互,把更多的选择权交给用户,用户可以自定义想要看的东西,比如说点击自己想要看的内容的超链接,这个时候用户向服务器发出请求,服务器就把存储在数据库里的内容返回给用户。

比如用户想要看第10个页面,就用将自己的请求通过URL的方式传递给服务器。

http://www.xx.com/?id=10

服务器从前端页面接受10这个数字后,通过一些脚本语言(php、asp等)连接了数据库,并在数据库里进行查询.

$sql = select * from tables where id = ‘10’ ;

假设一切用户的输入都是恶意的。

如果有不小心或者恶意的用户在id 上加多了一些东西,比如单引号等
传入一个id=10‘

那么服务器一如既往地将其传入数据库里,这个时候就会出现错误。
$sql = select * from tables where id = ‘10’ ’ ;这个语句就会多了一个单引号,出现了语法的错误。

这个时候不仅仅是个简单的语法错误,而是有个更严重的问题:用户可以操纵程序,后果就是,用户可以通过构造语句去获得自己想要从数据库看到的一切内容

一个寓言

一个巫师种了很多魔法树,为了不让村民偷,他弄了一条岩浆河,这个时候村民就无法接近他的书,然后他请了一个巨人,负责给居民采果。
这个时候巫师以为村民接近不了果实了,就是安全了。

直到有一天,有一个村民A想巨人要魔法卷轴,巨人被告知给予村民everything they want
但是这个村民A得到了魔法卷轴,从此就知道了巫师所有的秘密

《web-app security 初学者指南》

这个注入点就是村民A得到的魔法卷轴


注入点:

分类:

发送请求(传参方式)的不同:

  • GET
  • POST

位置的不同:

  • URL(?id)
  • POST(表格)
  • header 头部(cookie等)

web前端页面返回的不同:

返回信息少到多(难度递减)

  • 时间盲注
  • 布尔盲注
  • 基于错误

寻找注入点步骤:

单引号测试:

  • 为什么要先用单引号去测试?

这是测试其有没有注入点的最简单的方法。
原因:如果程序没有对用户的输入的数据进行过滤的话,那么这个单引号测试就能使得一般的SQL语句产生语法错误,然后web页面就会给用户做出反应(3种)。

还有哪些其他测试方法(三者排列组合)

  • 单引号
    $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

  • 双引号

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
  • 括号
    $uname='"'.$uname.'"';
    @$sql="SELECT username FROM users WHERE username=($uname) LIMIT 0,1";

测试方法的本质是什么?

符号的闭合问题,使SQL连接语句出现语法错误。

测试方法的第一原则是什么?

  • 寻找所有攻击面即能够输入数据的地方
  • 用符号的闭合问题,使SQL连接语句出现语法错误。
  • 基于web前端页面的回应,加以利用

测试方法的知识结构是怎样的?

单引号、双引号、括号等的排列组合。

应该先要多看几种$sql数据库连接语句的写法,看熟悉先。

说测试方法的知识结构,不如说$sql连接语句的知识结构。


过滤危险数据的方法:


cookie注入是属于get方法还是post方法?


web


F&Q理论:

学习一项知识,必须问自己三个重要问题

  1. 它的本质是什么。
  2. 它的第一原则是什么。
  3. 它的知识结构是怎样的。

一些原则:

  • 它的结构跟别的结构有什么类似的地方?
  • 很多东西都跟它当时的历史背景和需求有密切的关系?
  • 符合金字塔原理?
  • 通俗易懂的话解释出来
  • 用个比喻

刻意练习:

1.只在“学习区”练习

真正的练习不是为了完成运动量,练习的精髓是要持续地做自己做不好的事。

3. 持续获得有效的反馈

在某种程度上,刻意练习是以错误为中心的练习。练习者必须建立起对错误的极度敏感,一旦发现自己错了会感到非常不舒服,一直练习到改正为止。

获得反馈的最高境界是自己给自己当教练。高手工作的时候会以一个旁观者的角度观察自己,每天都有非常具体的小目标,对自己的错误极其敏感,并不断寻求改进。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值