1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| #include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
int i;
char buffer[32];
//char *key1 = /;
char *p1, *p2, *p3, *p4, *p5;
char key2[2], key3[2], key4[2], key5[2];
// if(argc != 2)
// return -1;
for(i = 1; i < argc; i++) {
memset(argv[i], 0, strlen(argv[i]));
}
sprintf(key2, %c, 0x90); // nop
sprintf(key3, %c, 0xeb); // jmp
sprintf(key4, %c, 0xcd); // int
sprintf(key5, %c, 0xff); // still easy
//p1 = strstr(argv[0], key1);
p2 = strstr(argv[0], key2);
p3 = strstr(argv[0], key3);
p4 = strstr(argv[0], key4);
p5 = strstr(argv[0], key5);
if (p2 != NULL || p3 != NULL || p4 != NULL || p5 != NULL) {
printf(Access denied.\n);
return -1;
}
else {
printf(Access granted.\n);
}
strcpy(buffer, argv[0]);
return 0;
}
|