轻轻绕过你的防线——霸道的柯南图片管理系统

                                                                  by   lake2

    前些天在浏览某个站点的时候,一时手痒,在URL后面加了个“ and 1=2”意在看看这系统有没有SQL注射漏洞,哪晓得浏览器弹出两个对话框然后无限的弹出窗口。只得赶紧结束掉进程,郁闷,我用的TT浏览器,其他的窗口也给结束了,5555~~~
    真是岂有此理,注射你也不用这样子整我吧,我倒要看看你这程序有什么能耐。到底不敢再去试那个系统,就从其他地方下手得到了webshell,经过打探,原来那是一个叫做“柯南图片管理系统”的东东。
    晓得了牌子那就好办咯,网上Down一个,看看源代码先。
    它的view.asp里有这样的话:

   if instr(id,"'") or instr(id,"select") or instr(id,"in") or instr(id,"from") or instr(id,"len") or instr(id,"where") or instr(id,"or") or instr(id,"and") then
    Response.Write("<script language=javascript>alert('你想做什么?');window.location.href='check.htm'</script>")
 Response.End
  end if                      '在这里过滤TMD的不良字符

    现在看看check.htm的内容:

 <script language=javascript>
alert("我Call!你想做什么???");
for (i=1;i<=10000000000;i++)
  {
   window.open("
http://www.weihai365.com/xxg")
    }
</script>

    看看它的险恶用心吧,弹出两个对话框之后就会打开100亿个窗口,呵呵,爽不?
    当然不能拿给他白白欺负啊,我得突破它的SQL注射防御才行,呵呵,仔细分析原来他的防御方法只是形同虚设,我们只需变换一下字符就搞定。
    看他的判断语句,是用的instr函数判断的,如果发现and、or、select等关键字就转到check.htm。嗯,看看instr的函数的用法:
        InStr([start, ]string1, string2[, compare])
    有2个可选参数start和compare,问题恰恰出在compare这里。Compare为0执行执行二进制比较,为1执行执行文本比较。默认为0。简言之,compare为0的时候比较时是大小写敏感的。即instr(“ and 1=2”,”And”)等于0。
    那现在好办了,只需把它过滤了的关键字的一个字母改成大写,那么他那么长的过滤语句就等于只过滤“’”,无所谓啊,反正注射又用不到“’”。
    他的表名是admin,用户字段admin,密码字段password,慢慢手工猜吧,呵呵,好像没有工具可以用,现在知道会编程还是有用处的吧。当然啦,也可以用Union查询直接得到管理员密码,这个比猜解快多了,还是写个程序吧,更快(图1)。

    复制URL访问之,诶,不对,你先要把关键字转换一下,特别要注意password包含“or”,admin包含“in”,表说我没提醒你哦。

    呵呵,还是那句话:Enjoy Hacking
    哦,最后说下如果要防御的话只需把参数compare设为1就ok。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章