要***一个网站,当然首先是看看网站的结构了。打开大学生创业网的主页,可以明显看到是PHP的。主页上有N多PHP连接。随便打开一个,地址也挺诱人的,是那种经典的php?id=的页面。但是PHP注入和ASP注入虽不完全相同,但是判断是否存在注入的方法还是一样的。首先,在地址后面加上经典的“and 1=1”,回车,页面返回正常。再把“and 1=1”改成“and 1=2”,回车,发现返回页面与正常页面不同了。初步确定此连接存在注入漏洞!PHP注入与access注入是相类似的,一般都是利用注入获得我们想要的诸如管理员等的机密信息。现在既然注入存在,那下一步就是判断MySQL的版本了,因为MySQL的版本0要在4.0以上才支持union联合查询的,我们在地址后面加上“and ord(mid(version(),1,1))>51 /*”,回车,返回正常页面。(由于空格在浏览器中被解释为%20,所以大家看图的时候要记得%20就是空格的意思哦!)。就说明MySQL的版本在4.0以上(MySQL4.0以上的版本都支持union查询。提交and ord(mid(version(),1,1))>51 /*,返回页面正常,这证明数据库版本号的第一个字符的Ascii码大于51,即其数值大于3,说明数据库是 

MySQL4.0以上版本的,支持union联合查询!)。现在我们已经判断出服务器支持union查询接下来就是判断字段数了。在URL后面填上“order by 10 /*”,回车,返回正常。看来字段数大于或等于10,再提交“order by 20 /*”,回车,还是返回正常页面。看来字段数大于等于20哦,那我们继续猜。再次提交“order by 25 /*”,发现返回页面不正常了,看来字段数应该小于25了。这样一直反复猜测,逐步缩小范围,当猜到23的时候页面正常,24的时候页面不正常,说明字段数为 

23!再下一步就是union查询了,在URL后面提交“and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 /*”回车,我们可以看到当前页面显示出来了4,12,13三处!与MSSQL相似的MySQL也有内置函数,比如:user()、version()、database(),分别就是当前连接用户、版本、当前数据库。分别把图9的4,12,13三处替换为user(),version(),database(),回车后返回了我们想得到的信息。当注入权限足够大的时候,我们可以使用load_file()函数读取服务器上任何存在的文件。但前提是要有root权限,还要知道文件的绝对路径,然后把路径转换成十六进制后填到()里面,再提交。不过这个注入点不是root权限,我在用load_file()函数读文件的时候,发现没有成功读取出来,不过这丝毫不影响我们继续注入。 

     不能用load_file()函数读文件并不能阻止我们继续,因为我们可以利用union查询猜出管理员的用户名和密码等信息,进而登录后台,再想办法拿到webshell。我们现在回到原来union查询那里继续。接下来要做的就是猜出管理员表段了,提交“and 1=2 union select 1,2,3,user(),5,6,7,8,9,10,11,version(),database(),14,15,16,17,18,19,20,21,22,23 from admin /*”,返回不正常页面。说明不存在admin表,看来并不是那么容易就猜中呢。再提交“and 1=2 union select 1,2,3,user(),5,6,7,8,9,10,11,version(),database(),14,15,16,17,18,19,20,21,22,23 from manager /*”,这一次返回正常页面了。这就说明存在manager表了,然后要做的就是猜管理员用户名和密码了。不过在这之前我们得先做一件事,那就是得先找到后台管理登录页面。至于为什么嘛,你想像一下千辛万苦、万水千山地猜出了管理员用户名和密码却找不到后台登录页面的处境就明白了。不过幸运的是这个后台倒是不难找的,直接在网址后面加个admin就跳出来了。查看一下登录页面的源代码发现管理员登录的用户名字段名为name,密码字段为password。这就更加好办了,把显示出来的4,12,13这里其中两个替换一下就可以暴出管理员用户名和密码信息了。我们把4替换成name,把12替换成password,也就是提交“and 1=2 union select 1,2,3,name,5,6,7,8,9,10,11,password,13,14,15,16,17,18,19,20,21,22,23 from manager /*”,返回了我们想得到的信息。从图中可以看出在原来显示为“4”的位置已经显示为“admin”了,这就是管理员后台的登录的用户名,在原来显示“12”的位置已经显示为“jiacaphua”,这就是管理员后台登录的密码了!当然了,你也可以换别的显示出来的位置,比如把name换在“13”的位置,把password换在“12”的位置也是可以成功暴出来的。有了用户名和密码再下来做什么呀,废话,当然是登录啦,后台我们已经事先找好了,呵呵,利用得到的用户名和密码成功登录了后台。 

    本以为登录后台后,想办法传个PHP马就结束这次旅途的,没想到后台里对上传做了限制,把我传上去的PHP马后缀全都强行改成GIF后缀的了!真是怎一个愁字了得啊!因为当时已经是凌晨一点多了,再不去睡觉就要挨骂了,所以没有办法,只有先去休息了。起来的时候再进那后台去研究研究,发现能上传的地方不只一个!这套系统不会把全部上传的都过滤了吧。原来那后台在添加新信息的地方还有别的好几处上传文件的!在此要感谢一下我的朋友M.Schumacher,是他给了我这套系统拿webshell的方法的。打开上传图片页面。直接上传了一个PHP后缀的PHP马,但是上传页面没提示上传成功,也没有提示上传失败,查看上传页面的源代码也没有找到关于马的路径之类的信息。难道进了后台也等于没进么?拿不到webshell的心情的确不好受啊,少说也猜了很久吧,好不容易才进了后台,居然败得一塌糊涂!比关公还惨呀……555555555 

    万般无奈之下怀着悲愤的心情打开“插入图片”页面,奇怪的是居然页面是空白的,难道被过滤了。页面空白,不会代码也空白吧,于是查看源代码,发现内容不是空的!Ctrl+F查找.php,第一个是当前页面,再查找下一个,发现一个PHP后缀的文件。会不会这个就是我的PHP马地址呢?怀着一试的心态,打开页面。哈哈,终于看到PHP马的登录界面了。登录进去,发现是windows系统!嘿嘿,这回系统权限都有可能拿到手了,如果是*nix系统的话,对我来说还是挺大阻碍的。因为我对*nix系统根本不熟悉,甚至没见过呢! 

    既然是windows系统就好办多了,拿出superscan3.0扫了下21端口,发现装有Serv-U。关于利用它的提权,教程文章都已经是数不胜数的了。这个PHP马就已经包含有Serv-U的提权程序了,细心的你应该也发现了吧,就是那个Serv-U EXP(严格来说其实这个也不是EXP)二话不说,直接添加个用户就是了,命令格式为“net user username password /add"、“net localgroup administrators username /add”,看返回信息用户已经成功添加进去了,特别是那句“Recv: 200 EXEC command successful (TID=33). ”这就说明命令已经成功执行了。接下来就是连接 

登录远程桌面了,可是我把网站域名放到远程桌面连接器里连接的时候,发现连接不上。难道是防火墙搞的鬼,想用PHP马执行一下DOS命令,可是老是出错,看不到回显。好在发现这个服务器上还支持ASP、ASPX马。于是上传了一个ASPX马,利用读取注册表的功能,把存放在注册表里的远程桌面服务器的连接端口读了出来,原来是60000呀。最后就是连接登录上去了,呵呵,这服务器的配置还不错哦,还是4个Xeon3.2GHz的CPU哦。这次***到此就完满结束了。 

    后来在在网站上看到还有一个PHPWind v 5.0.1的论坛,让我吃惊的是用猜出来的网站后台管理员用户名和密码竟然可以登录进PHPWind的后台。在PHPWind后台同样可以拿到webshell的哦,我的朋友ASM就是在PHPWind的后台下拿到的呢……感谢他一个。看来社会工程学也是一个十分重要的技术哦……管理员叔叔们要小心了,把密码都设成同一个可不是一个好习惯哦!