凤凰涅槃 浴火重生

发布新日志

  • Web安全测试小结

    2011-03-31 00:06:16

    小小地总结一下下

    目前工作中应用到的Web安全测试分为以下4种:


    1、跨站脚本

    在页面的提交内容中加入JS代码,例如: <script>alert("hello")</script>
    如果服务器端未对提交内容中的特殊字符进行转义,而直接保存进数据库。那么,当再次访问此内容的时候,此JS代码将会被浏览器解析和执行,

    2、SQL注入

    SQL注入可以算得上很严重的漏洞,如果出现,将对后台数据库造成非常严重的威胁。
    检查方法分四步:
    第一步:加单引号。
    在类似于 这样的URL:http://www.51testing.com/spacecp.php?action=spaceblogs&op=edit&itemid=233044 (其实就是这篇日志的链接地址) 的itemid的值后面加单引号,like this:  itemid=233044'  然后提交此页面,如果页面返回信息中有类似于查询语句异常或者是数据库脚本出错。则初步判断可能会有SQL注入的问题。

    第二步:加两个单引号。
    还是拿以上的URL为例子,在itemid的值后面加两个单引号,like this:  itemid=233044''  然后提交此页面,如果页面返回正常,则执行第三步。

    第三步:加上或条件为真的语句。
    还是拿以上的URL为例子,在itemid的值后面加或条件为1的语句,like this:  itemid=233044' or '1'='1  然后提交此页面,如果返回了所有日志的信息,则可以肯定存在SQL注入的漏洞。

    第四步:加上与条件为假的语句。
    还是拿以上的URL为例子,在itemid的值后面加或条件为1的语句,like this:  itemid=233044' and '1'='2  然后提交此页面,如果返回结果为空,则结合第三步的结果,可以肯定存在SQL注入的漏洞。


    3、跨文件目录
    这个漏洞一般出现在WEB页面上传附件功能,或者是图片、文件资源显示的功能。
    右键显示图片、附件的属性,查看其URL,(待补充)


    4、权限漏洞
    这个漏洞比较容易检查出来,准备两个高低权限的帐号,比如一个管理员帐号A,一个普通用户B。
    第一步,使用A帐号登录,打开只有管理员才能操作的页面,记录该页面的URL(A)
    第二步,使用B帐号登录,访问URL(A),如果能够打开此页面,则说明存在权限漏洞。

     

     

  • 同行概述QTP在项目中应用[0]

    2010-10-28 10:17:23

    感谢  飞鱼的传说  的分享

    以下为整理内容:

        去年9月被抽调来做QTP,因为公司原来做QTP那位辞职了,那时候公司也才开始做,只有他一个,这位兄台写了一个框架,把对象的属性全存到数据库,利用表关联在脚本运行时动态建立对象结构识别对象,这个框架写得那叫一个天书,几乎没人能看懂。我一个人做了3,4个月,北美那边还有2个同事,才开始学QTP,所以不懂的问题也只有问她们,主要是看她们的代码,我们全是描述性编程,所有的操作全封装在Function里,看了她们的代码才知道原来vbs可以写得这么复杂。今年年初,来了2位高手,一个在HP干了3年,另外一个也是在上家公司带QTP团队的,公司开始砸钱了。这时候真正开始高速成长,我们公司系统前台是FLEX,加上后台service不是太稳定,同步是个大问题,所以脚本要考虑到这一点,必须在很多地方用不同的方式验证页面是否真正到达,现在我们做的就是维护一个自动化的API,所有的操作放到API里面,复杂的逻辑都写进Function里,在Action里直接添加检查点。现在想来做自动化最难的是什么,不是语言,不是QTP技术,而是解决问题的思路,当有的对象不能识别的时候这么绕过,当然最好找开发改,但是也需要想想办法绕过去,是否可用坐标,用坐标是否有偏差,是否可以通过TAB建从其他能识别的对象开始查找焦点,然后进行操作。
       最后说说所谓的框架,经常听人谈论,但是把自动化做成功这个一点不重要,而是脚本的质量,是否跑不挂,错误信息打印是否完整利于查找问题等等,框架只是一个改进,例如QTP批量跑脚本自带的testbatchrunner不好用,我们就用vbs自己写了个自动化QTP自身的小程序,跑完把结果输出到指定的文件夹。
       就说这么多

    你如果把对象结构全写进function里,在Action里全是检查点,在每个脚本里关联functin library,对象更新了直接在function library里replace all就可以了,你用框架同样不可避免这样的问题

    我们用到QTP的功能就是描述性编程去识别对象,场景恢复,虚拟对象,对象库都没用到,错误处理就是用的reportmanager对象在脚本里打印出错误信息,没进行更多的封装之类的,

Open Toolbar