cheng's profile零碎的力量PhotosBlogListsMore ![]() | Help |
|
|
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/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,新增的远程调试功能让我着实兴奋了一下。今天正好工作需要,花了点时间研究一下怎么用。基本上还是比较傻瓜化的,总结了一些要点及期间可能遇到的问题如下:
至此调试应该没有问题了,VMWare现在提供的这个功能非常好,以后调试程序可以直接在各个系统里面调试了,不过好像支持的系统有限。时间紧任务多,没太深入研究,有啥奇怪的问题发生就不用问我了。 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... IDR_MENU MENU DISCARDABLE IDR_MENUBAR SHMENUBAR 朋友们的Win32 SDK开发都比我强,废话就不用说了,就说一下这个资源的每个地方代表什么意思。 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编码
|
|
|