网友“小好”给我了一个聊天室ip,让我去看看。原本想入侵它的服务器,大概技术没到家,搞了十几分钟,也没有进去。于是,我就想找找这个聊天室有什么bug。聊天室看得出是用php+mysql组建的。栏目有:用户注册、 忘记密码、 修改资料、 用户自杀、 聊 神 榜、 聊天说明、 刷新列表 。接着就是聊天了。
我随便注册了一个用户名,按照我的喜好,喜欢开xxxxxx用户,这样,我就用xxxxxx注册了一个用户。登陆进去。
从哪儿下手呢?我想还是先看看修改资料,一般聊天室这里总有这样那样的漏洞。点了一下修改资料,于是就进入下一画面,需要输入用户名和秘密。输好了后,下一步,进入资料修改。yes!资料修改中有用户昵称,其实就是用户名,马上查看源文件,看到如下的hmtl语句:
=================================================cut===========
<form name="ezchat" action="modifyed.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="active" value="change">
<input type="hidden" name="user_name" value="xxxxxx">
<input type="hidden" name="user_passwd_t" value="xxxxx">
<table cellspacing=1 cellpadding=2 width="675" border=0 align=center bgcolor="#ffffff">
<tr align=center bgcolor="#ffd193">
<td colspan="4" height="22">用户资料</td>
</tr>
<tr align=center bgcolor="#ffeace">
<td width="20%" height="22">
<div align="left">用户昵称:<font color="#ff0000"><b>*</b></font></div>
</td>
<td width="30%" height="22">
<div align="left">
<input type="text" name="user_name_1" readonly class="input" value="xxxxxx">
</div>
</td>
==========================================end==================
很明显,其中的两个hidden是用来判断你是否有修改资料的权限,可是,这个人没想到的是放了一个readnly的输入框并不安全,就像上一次一个asp论坛一样,readonly并不能解决什么。按照惯例,我存了这个文件,并不修改两个hidden,把readonly去掉。然后到聊神榜随便看了个用户名。修改form的action,记得要在前面加上url路径,然后改掉这个用户昵称。按下“修改”命令,出现了什么?
=========================================
修改成功
恭喜您,您已经成功修改资料 \^_^/
==========================================
哈哈,这样我就夺取了一个用户名.虽然没有入侵它的服务器,但却也能搞到好的用户名,这总算也不白费了功夫。总结一下,遇到提交表单的时候,我们可以想一下能否修改表单的值来达到管理员所想不到的目的。这也是培养我们观察能力的好方法!:)
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器