cheng's profile零碎的力量PhotosBlogListsMore Tools Help

Blog


    8/12/2009

    mod_auth_any module of Apache

    最近工作中需要重现一个超老的apache mod_auth_any模块的漏洞,配置这个模块费了好大劲,在luoluo的帮助下终于能用了。

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthType Basic
        AuthAnyUserProg "/etc/httpd/conf/test.py"
        AuthName "test"
        require valid-user
    </Directory>

    test.py脚本在用户认证失败的时候,应该输出
    print "Authentication Error: xxxx"
    这样才会使web server拒绝掉用户的请求

    7/9/2009

    CVE-2009-2283

    最近Sun的公告http://sunsolve.sun.com/search/document.do?assetkey=1-66-262428-1说修正了一个XSS漏洞。但是由于是官方发布的公告,并没有提到PoC(废话,官方怎么可能提供PoC呢)。Google了一下也无果,搜索了一下补丁,发现http://sunsolve.sun.com/search/document.do?assetkey=1-21-136986-03-1上面列出了两个jsp文件很是可疑。于是乎测试了一把,发现了确实有XSS位于如下位置。
     
    3/27/2009

    iPod Touch2 2.2.1 破解刷机

    上周买了一个iPod touch 2代,买机器时,js说由于我买的是2.2.1版本的系统,现在还无法破解,但是我看weiphone上已经有了关于完美破解的帖子,于是乎
    决定自己破解,毕竟以前刷过很多次手机,想必itouch也不会很麻烦。破解过程按照这个帖子中的内容即可。
    http://www.weiphone.com/viewthread.php?tid=299435&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D39
    几点注意的:
    1. 破解最好在XP下进行,Vista下我没试过。刷机前先确保开启系统的三个服务,Messenger,Telnet, Terminal Services。这三个服务如不开启,最后恢复自定义固件的时候肯定会失败,一般都是提示160X的错误。我就是因为这个原因,一直不解是什么缘故,导致刷了6次均失败,还以为是自定义固件有问题,后来google了一番才发现是这三个服务没有开启导致。
    2. iTunes的版本好像不重要,我用的最新的8.1版,没啥问题。
    3. 让itouch进DFU模式的方法是将itouch连到电脑并开着iTunes,这时itouch是开机状态,按 power 和 Home 键不放直到itouch自己关机,立刻松开 power 键但是仍不要放开 Home 键直到 iTunes 认出itouch,这个过程中系统会自动装DFU模式的驱动,右下角会有显示,进入后手机会是黑屏状态,没有任何提示图案。进入后可以先将iTunes退出。这个方法进DFU可以避免计时了。
    3/23/2009

    用TrueCrypt的注意

    以前可能由于使用不仔细,没有好好读TrueCrypt的提示,今天发现加密卷中的内层内容访问不了了。由于TrueCrypt设计了两层的加密,外层和内层分别使用不同的密码。这样按照他的说法,当人员受到威胁时可以说出外层的密码,而不说出内层的密码。但是这里面有个问题,当外层存的文件过多时,会把内层的内容覆盖掉,导致虽然可以加载上内层,但是windows会提示该卷是没有格式化的,实际上这个时候内层的内容已经玩完了。我今天就遇到这个问题,不过幸好1个月前存了备份,损失不大。提出来希望用这个软件的兄弟们注意一下。
    2/20/2009

    ATL 下载地址

    刚刚从VS2005转到VS2008,发现有调用了ATL的工程不能编译了,原来是ATL已经开源,不是VS2008的一部分了,需要自己下载。记录一下地址
    2/17/2009

    怪问题

    今日升级到了office2007和vs2008。忽然发现,每次打开excel2007的时候,总是弹出windows installer的对话框,提示我正在配置vs.net2008云云。看了一下event viewer。 有这么一条错误。Detection of product '{D7DAD1E4-45F4-3B2B-899A-EA728167EC4F}', feature 'Visual_Studio.NET_Pro_x86_enu', component '{2657A01D-05BD-49AA-B4AE-B243BE77CD6C}' failed.  The resource 'H:\' does not exist. 看似是vs2008有些问题。但是在注册表中搜索了一下这个id为2657A01D-05BD-49AA-B4AE-B243BE77CD6C的组件,发现根本不存在。google了一下,就发现了一个页面在谈论这个组件,而最终的讨论结果也是不了了之。于是乎只能自己想办法了。根据事件查看器中的H:\我想应该不是vs的问题。因为vs我当时是用winmount把iso加载到y盘装的,如果是他的问题windows installer也不应该找到h盘去啊。但是回想起当时office我是用酒精的虚拟光驱装的,当时用的是h盘。后来我把酒精卸载了。于是乎h盘也就没有了。所以很有可能问题出在office上。最终果然不出所料。先修复了一遍vs2008,问题依旧。然后又修复了一遍office,发现问题解决。
    1/21/2009

    如何修改Windows Mobile 6.1 短信聊天模式?

    最早用dopod586w的时候,刷了个wm6.1,当时默认的短信模式是聊天模式。后来换P800后也刷了个wm6.1,但是默认的短信模式是传统模式。个人还是比较喜欢聊天模式,所以就想改回来。搜索了一下,找到如下方法:
    HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings\OEM]
    "SMSInboxThreadingDisabled"=dword:1
    如果使用传统模式,则SMSInboxThreadingDisabled这个键的值得设置为1,由于我要改成聊天模式,所以将这个值设置为0即可。
    11/19/2008

    XML Schema

    用XML Schema校验XML文档感觉还是很不错的:),就是某些方面感觉还不是很方便。灵活性还有待改进。

    记录一下网址,方便日后参考http://www.w3school.com.cn/schema/el_choice.asp

     
    7/24/2008

    DNS cache poisoning 攻击

    最近这些天各个地方都在讨论这个,由于工作需要也研究了一番。原理不在这里讨论了,主要由于源端口没有充分随机化导致攻击者猜测transcation id同时利用伪造响应包中的additional record对主域名进行poison。Metasploit都已经发了exploit。我用metasploit搭建的dns service测试了一下,我们经常使用的202.106.0.20就有问题,
    C:\Documents and Settings\Administrator>nslookup
    *** Can't find server name for address 10.0.0.1: Non-existent domain
    *** Default servers are not available
    Default Server:  UnKnown
    Address:  10.0.0.1
    > server 202.106.0.20
    Default Server:  gjjline.bta.net.cn
    Address:  202.106.0.20
    > set type=txt
    Non-authoritative answer:
    abcedfe.red.metasploit.com      text =
            "61.135.23.58:3865 abcedfe.red.metasploit.com"
    > abadfsddfe.red.metasploit.com
    Server:  gjjline.bta.net.cn
    Address:  202.106.0.20
    Non-authoritative answer:
    abadfsddfe.red.metasploit.com   text =
            "61.135.23.58:3865 abadfsddfe.red.metasploit.com"
    > ffffff.red.metasploit.com
    Server:  gjjline.bta.net.cn
    Address:  202.106.0.20
    Non-authoritative answer:
    ffffff.red.metasploit.com       text =
            "61.135.23.58:3865 ffffff.red.metasploit.com"
    >
     
    可以看到,202.106.0.20使用的source port 是udp 3865,而且是静态的。也就是说,攻击者只要发一堆猜测transcation id的包就可以poison了。哎,但愿没人利用这个对dns进行攻击,也希望国内的管理员赶快打补丁吧。如果用于挂马或钓鱼,受害者会将不计其数。
     
    6/12/2008

    使用VS2005+VMWare进行远程调试

    前几天刚刚换了VMWare6,新增的远程调试功能让我着实兴奋了一下。今天正好工作需要,花了点时间研究一下怎么用。基本上还是比较傻瓜化的,总结了一些要点及期间可能遇到的问题如下:

    • 保证host和guest系统的使用的用户名相同,并且应该具有administrator的权限
    • 关掉guest系统的防火墙,不关其实也可以,但是要配置端口,由于是guest系统,所以为了调试程序先关掉比较省事。host系统的防火墙可以关了,也可以按照vmware的提示让他自动修改,其实无非是打开了TCP135,UDP500和UDP4500三个端口。手动配置也可以。
    • 按照vmware的帮助来配置vs 2005各项设置
    • 配置好后直接用VS2005的VMWare菜单下的Start项启动项目进行调试。
    • 如果调试时,host系统的vs2005提示An unhandled exception of type 'System.Security.SecurityException' occurred in Unknown Module.这样的话,原因是由于.net的Code Access Security。以下命令可以解决问题 "caspol.exe -chggroup LocalIntranet_Zone FullTrust"。因为实际上调试的程序在guest系统中是在网络路径下执行的。所以有些权限可能没有。如果还是报安全问题,那么请运行下面这条命令 "caspol.exe -chggroup Internet_Zone FullTrust"。在host系统中请不要应用这两个命令,除非你明白这意味着什么。这将导致系统安全性降低。

    至此调试应该没有问题了,VMWare现在提供的这个功能非常好,以后调试程序可以直接在各个系统里面调试了,不过好像支持的系统有限。时间紧任务多,没太深入研究,有啥奇怪的问题发生就不用问我了。

    3/18/2008

    一个站

    今天从alert7那里看到了这个站http://www.badwarewatch.com/,记录一下。用于查找一些被reserved的CVE公告
    9/19/2006

    倒霉的initguid.h

    今天写一个手机上的程序时,总是到最后报告两个LNK2001,虽然我已经在附加依赖项中添加了需要的lib,可是就是不行。查MSDN无果,在网上搜索好久,最终终于在一个帖子的回答中无意看到,说应该include头文件initguid.h。以前印象中总觉得LNK2001错误和没有引用正确的附加库有关,今天才知道,原来还与没有正确的Inlcude头文件有关。MSDN中对LNK2001的解释没有一个提到这点的。不过还好,只耽误了半天时间,看网上那个哥们说他耽误了两天才搞定....
    9/3/2006

    tips:586w与PC的蓝牙同步

    一定要注意,在你按照网络中所教的步骤设置好以后,如果发现同步还不能成功,请检查蓝牙是否设置成了"可发现".如果是,将其改为"打开".然后再试两遍同步,通常刚改回来的第一次还是不能成功,但是第二次一般就可以了.为此,我折腾了一天才发现原来是这里的问题.
    8/20/2006

    dopod535 通过蓝牙与PC连接

    前些日子就买了PC的蓝牙适配配器,仅仅38元,但是一直没有测试。今天上午正好无事,所以决定测试一下。以前从来没玩过蓝牙的设备,虽然我的手机和笔记本都有蓝牙功能,但一直也没有用过。今天在同步的时候遇到些小问题,折腾了10分钟才得以搞定,终于可以用蓝牙来实现手机与PC的连接了。本来我的535属于淘汰机型,但想想估计也有很多人在用,同时理论上方法应该适用于565或者575等等型号,所以还是记录一下操作步骤。
    步骤如下:
    1.购买一个PC蓝牙适配器,我用的是IVT的产品,安装到PC上其驱动程序,使他可以正常运转。(友情提示:不用的时候记得把蓝牙关了,谁知道这种低辐射长期持续会不会让我们变成XMen呢,呵呵:P)
    2.记得一定要在PC的蓝牙程序窗口中的安全菜单里面给PC蓝牙适配器设置一个口令,随便用个123。这点非常重要,刚开始我为了方便,用了一个空的口令,后来在配对绑定设备的时候竟然不行,手机必须要求我要输入一个要绑定设备的PIN,这里的PIN其实就是我们设置的123,千万可别当成是sim卡的PIN,这是两码事。
    3.在手机的蓝牙设置中选择可发现
    4.这时在PC的蓝牙程序窗口单击一下刷新设备,就可以看见手机的设备了,名字叫dopod535,在上面点击右键,选择配对,go,快去看一下手机
    5.可以看到手机上提示,XXX要连接,是否将他加入绑定设备列表,别犹豫,点击确定,随后要求输入PIN码,输入我们设置的123
    6.看PC屏幕上的蓝牙程序窗口中,dopod535设备图标上应该出现一个小红勾,说明配对成功。
    7.这时,在手机中进入ActiveSync程序,菜单-〉选项-〉PC设置-〉菜单-〉高级 在出现的界面中将USB改为蓝牙
    8.确定出来,退到ActiveSync程序的主界面,再选菜单-〉通过蓝牙连接,此时应该看到电脑屏幕上会出现提示,告知设备要连接。这里一定记得把checkbox的勾勾上,再点接受,否则,电脑的ActiveSync程序还是发现不了手机已经通过蓝牙进行了连接。我的时间基本上都浪费在这里,反复多次,后来才发现必须要在checkbox上打勾,希望朋友们不要在在这里浪费时间了。OK,这时应该已经同步成功了,接下来的事情就是.....爱干嘛干嘛!
    7/21/2006

    Ajax framework Dojo

    今天看了一下这个框架,感觉还可以,功能很多还没细研究,只是看了一下最基本的Ajax调用。写了点测试代码,利用他来做要比自己写省事多了,更重要的是兼容性要好。
    <html>
    <head><title>test dojo</title></head>
    <script type="text/javascript" src="dojo.js"></script>
    <script>
    dojo.require("dojo.io.*");          // for Ajax requestss
    function test()
    {
     dojo.io.bind({url: "http://www.netsvc.org/ddns.aspx",
     load: function(type, data, evt){
      //var a = document.getElementById("ttt");
      //var b = document.createTextNode(data);
      //a.appendChild(b);
      var divttt = document.getElementById("ttt");
      divttt.innerHTML = data;
      var link = document.getElementById("link");
      if (link.hasChildNodes())
       link.innerText = "已经测试完成";
     },
     mimetype: "text/plain"});
    }
    </script>
    <a id ="link" href="#" onclick="test()">test</a>
    <div id="ttt"></div>
    </html>
    7/16/2006

    Javascript计算二进制文件MD5 Hash的代码

    说是用Javascript,其实是调用了COM组件。只不过用JS的语法而已。
    FSO的 File对象是无法读二进制文件的,只能读取文本。所以我在使用FSO去读取文件计算MD5 Hash的时候总是会出现莫名其妙的问题。这个也是我在用FSO前就估计到了的,但是一直没有找到好方法解决。后来终于想到用ADODB.Stream对象。哎,以前在瑞星的时候还写过删除这个对象的程序,现在竟然忘记了他能读取二进制文件。看来老了,呵呵。
    代码如下:
    var adoStream = new ActiveXObject("ADODB.Stream");
    adoStream.Type = 1;  // 1=adTypeBinary
    adoStream.Open(); 
    adoStream.LoadFromFile("\\\\127.0.0.1\\C$\\Windows\\regedit.exe");
    var g_hashed = new ActiveXObject( "CAPICOM.HashedData" );
    g_hashed.Algorithm = 3; // MD5
    g_hashed.Hash( adoStream.Read() );
    adoStream.Close();
    //B313C22A27D1D8677CDEC778346D817E
    System.println(g_hashed.Value);
    这里注意一点,由于我是使用adoStream.Read()一下将文件内容全部读到内存缓冲区中,所以在遇到大文件时,需要改写上面代码,每次读1024或2048 Bytes比较合适。然后对每次读出的内容均调用Hash函数,最终在读取Value属性的值即可。
    6/23/2006

    Wave Record In Mobile Phone

    这些日子一直在弄智能手机上的录音代码,但总是发现,每当一调用waveInStart()函数,在回调函数中马上就会接到返回的MM_WIM_DATA消息。修改了程序中的多处,均这样。最初想难道我的缓冲区太小了?接收缓冲区怎么一下子就满了。鼓捣多日无果。今日决定上codeproject下载一个别人写的windows上面的录音代码看看。回来编译,调试。我晕,原来也是一录音缓冲区就满了。对于声音方面,我属于绝对的门外汉,五线谱都认不全的那种。这回明白了,声音在计算机中的存储还是挺占空间的,尤其是这种WAVE格式的,属于无损的声音采集,超级费存储空间。好了,终于解决了这个问题,向我的P.o.C程序的下一个目标挺进~~!
    6/14/2006

    关于GET方式提交数据

    今天在写DDNS的WebLogin时,由于我的提交数据经过加密,所以都是些不可见字符。最开始由于脑子中的错误概念,认为无法通过GET提交,后来经过测试,原来可以。呵呵,又纠正了一个脑子中的错误概念。最终将weblogin部署完成,高兴:)
    今天是我的生日,老婆给我买了新衣服穿,祝自己生日快乐!
    6/10/2006

    创建Smartphone上的软键菜单的方法

    近几日,想给我dopod535手机写个程序,用来P.o.C

    选择开发方式的时候,刚开始想用.NET Compact Framework,后来发现太麻烦。由于我的程序中多出都调用了系统的API,而精简版的.NET框架中又没有这些API的封装,导致我必须要使用P/Invoke的方式。其实对于函数的P/Invoke还算省事,一条声明就搞定了。可是函数需要的那些参数都是结构体。这样一来我就要在我的程序中把那些结构体再重新定义一遍。Crazy...
    最后只好选用WinCE SDK来写。SDK对于我这种用惯了MFC的人确实麻烦,很多东西记不住,都需要看MSDN。不过还好,VS2005可以生成一个简单的工程,把那些创建主窗体的过程写好了,谢谢Gates叔叔。
    开发时发现,不会创建菜单,Smartphone上的菜单资源定义和Windows的菜单资源定义稍微有些不同。由于Smartphone采用的是两个soft key来调用菜单,所以他的菜单在资源文件中的定义叫SHMENUBAR或者叫RCDATA,这两个名字是一样的,最开始我还纳闷了半天。下面给出一个我写的简单的菜单资源。

    IDR_MENU MENU DISCARDABLE
    BEGIN
     POPUP ""
     BEGIN
             MENUITEM "Pop" ,IDM_PAUSE
         END
    END

    IDR_MENUBAR SHMENUBAR
    BEGIN
        IDR_MENU,
        2,
        I_IMAGENONE, IDM_START, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE,
        IDS_START, 0, NOMENU,
        I_IMAGENONE, IDM_STOP,TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE,
        IDS_STOP, 0, 0,
    END

    朋友们的Win32 SDK开发都比我强,废话就不用说了,就说一下这个资源的每个地方代表什么意思。
    IDR_MENU 是我定义的弹出菜单,注意这里的名字要和下面IDR_MENUBAR SHMENUBAR中紧接在BEGIN后面的第一个参数一致。这样才能实现按right soft key时可以弹出菜单来。
    IDR_MENUBAR SHMENUBAR中的参数下面逐一说明:
    IDR_MENU 我们要用软键显示的菜单的子菜单名字
    2  说明这个MenuBar上有几个菜单项,Smartphone只能有两个(为什么?如果你的Smartphone有三个软键你可以定义三个,哈哈)
    I_IMAGENONE Smartphone菜单不支持带有bitmap的,所以这里采用这个定义
    IDM_START   这个是我们用来在WM_COMMAND中处理控件的标识
    TBSTATE_ENABLED  这个代表菜单的启用状态
    TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE 菜单的样式,具体可以查MSDN中WinCE ToolBar Sytle。
    TBSTYLE_DROPDOWN 这个也是样式,如果你的菜单有子菜单,那么这里必须要用这个样式
    IDS_START 菜单上显示的字,实现在字符串资源中定义
    最后的0 子菜单的索引,大家注意,我的IDR_MENU的定义第一项就是一个POPUP式的菜单,所以我这里设置的是0
    NOMENU 代表该菜单项没有子菜单

    OK,写出来省的以后忘了。

    4/13/2006

    字符编码 Unicode UTF8 ANSI

    今天为了把UTF8转换为Unicode,写了如下代码
    // the string is 你好 in chinses , code page used UTF-8
     CHAR    szMsg[300]="\xe4\xbd\xa0\xe5\xa5\xbd\x00"; 
     WCHAR wszMsg[300]={0};
     MultiByteToWideChar(CP_UTF8,0,szMsg,7,wszMsg,300);
    转换后用wprintf进行输出,什么也在console里面看不见。补充下面的代码:
     memset(szMsg,0,300);
     WideCharToMultiByte(CP_ACP,0,wszMsg,-1,szMsg,300,NULL,NULL);
    将Unicode转换为ANSI,然后用printf输出,可以看见“你好”
    总结
    1.经验WCHAR不是Unicode,而Unicode可以存储在WCHAR型的变量中。
    2.CRT的printf和wprintf不支持Unicode编码