奇奇怪怪的人禁止...吧 关注:76贴子:3,582

发帖代码分析

只看楼主收藏回复

在浏览器的地址栏使用javascript代码应该对很多人都不陌生
在前几天看到一个帖子,说贴吧发帖可以使用js代码完成,并且规避了本应该被过滤的字
比如说,度娘的“繁简转换”,“和谐过滤”等
现将其代码公布如下,试做简单分析。


1楼2012-07-22 11:37回复
    javascript:(
    function()
    {
    var str=rich_postor._editor.getHtml();
    var out="";
    for(var i=0;i<str.length;i++)
    {
    if (str.charCodeAt(i)<128)
    {
    out+=str.charAt(i);
    }
    else
    {
    out+="&#"+str.charCodeAt(i)+";";
    }
    }
    rich_postor._editor.getHtml()= function(){return out; };
    rich_postor._submit();
    }
    )();
    


    2楼2012-07-22 11:40
    回复
      从以上代码可知,函数的动作是将rich_postor对象中获取html数据
      可以不难推测,这是发帖框组件
      获取之后,对基本ASCII值不进行操作,对其他ASCII值超出127的其他字符使用HTML标准字符解释方法&#形式进行注释。
      最后将html值设置为修改后的html值
      然后提交。


      3楼2012-07-22 11:44
      回复
        根据其效果,不难分析,原来神奇的度娘为了减少服务器工作量,可能把所有的和谐工作全部交由用户电脑执行,即浏览器解析并执行javascript代码。
        这样既减少服务器的负担。
        虽然这是个好办法,但是,根据ajax技术的特点,这样也就造成了用户可以自定义js操作以控制度娘的行为。
        于是这样的后门就留下来了。


        4楼2012-07-22 11:47
        回复
          和谐测试:警察


          5楼2012-07-22 11:57
          回复
            繁简转换测试:韓度さいてい


            6楼2012-07-22 11:58
            回复
              以下是正常发帖度娘过滤的情况:
              和谐测试:**
              繁简转换测试:韩度さいてい


              7楼2012-07-22 11:59
              回复
                技术宅毁灭世界


                IP属地:浙江来自掌上百度9楼2012-07-22 20:55
                收起回复
                  接下来进行繁体召唤实验,以检测at功能是否也是使用ajax技术完成
                  测试对象ID:测试_测试


                  10楼2012-07-23 21:44
                  收起回复
                    测试本用户


                    11楼2012-07-23 21:45
                    回复
                      @測試_测试


                      12楼2012-07-23 21:51
                      回复
                        @測試_测试 你好!


                        13楼2012-07-23 21:52
                        回复
                          结论:没有收到任何提示消息。
                          说明at功能也是由ajax提交相关的请求,此规避文字过滤代码不能完成繁体召唤功能。


                          14楼2012-07-23 21:55
                          回复
                            留档一个:直接复制可用的代码
                            javascript:(function(){var str=rich_postor._editor.getHtml();var out="";for(var i=0;i<str.length;i++){if (str.charCodeAt(i)<128){out+=str.charAt(i);}else{out+="&#"+str.charCodeAt(i)+";";}}rich_postor._editor.getHtml= function(){return out;};rich_postor._submit();})();
                            


                            16楼2012-07-30 13:28
                            回复