IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Пишем CGI - сканер на Си

Привет, гость! Если ты начал читать данную статью, то я тебя поздравляю, т.к., только человек с мозгами может на такое решиться :). А может ты заглянул сюда из любопытства? Что такое CGI-сканер давно всем понятно, а вот написать такой... Мм-да! Ну что ж кибер-юзер, я помогу тебе, как говориться "Чип и Дейл спешат на помощь" :). Итак, приступим:

//Предcтавимся :)
/*
============================================
RootTeam CGI-scaner by Xarth
Tested on FreeBSD 3.0
gr33tz to: GIN, UKR, Nerf, RootTeam, r00tshell.
============================================
*/
//Для начала надо объявить библиотеки необходимые для работы сканера...
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <ctype.h>
#include <arpa/nameser.h>
#include <sys/stat.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>

void main(int argc, char *argv[]) //без комментариев...
{
int sock,debugm=0;
struct in_addr addr;
struct sockaddr_in sin;
struct hostent *he;
unsigned long start;
unsigned long end;
unsigned long counter;
char foundmsg[] = "200";
char *cgistr;
char buffer[1024];
int count=0;
int numin;
char cgibuff[1024];
char *buff[50]; //думаю, этого хватит...
char *cginame[50]; //вся тема в тех же цифрах...

//Ну а теперь, собственно сканирование...
buff[1] = "GET /scripts/counter.exe\n"; //CGI баг номер один
buff[2] = "GET /cgi-bin/perl.exe\n"; //Баг номер два
buff[3] = "GET /_vti_pvt/service.pwd\n"; //Баг номер три
buff[4] = "GET /_vti_pvt/users.pwd\n";
buff[5] = "GET /_vti_pvt/authors.pwd\n";
... //эти точки не писать!
buff[49] = "GET /cgi-dos/args.bat HTTP/1.0\n";
buff[50] = "GET /cgi-win/uploader.exe HTTP/1.0\n"; //Баг номер 50

//Смотрим, что-же нашлось...

cginame[1] = "counter.exe\n"; //Найден counter.exe
cginame[2] = "perl.exe\n"; //Найден perl.exe
cginame[3] = "service.pwd\n";
cginame[4] = "users.pwd\n";
cginame[5] = "authors.pwd\n";
... //эти точки не писать!
cginame[49] = "arg.bat\n";
cginame[50] = "uploader.exe\n"; //Найден uploader.exe

Вот и все! Конец! Видишь, дело-то не сложное.. главное только понять принцип действия! А теперь, книжку в руки и "учиться, учиться и еще раз учиться", как завещал великий Ленин! И не забудь подправить сорц код, а то мало-ли, что может случиться :).

Статья является собственностью RootTeam.
Распространение без нашего разрешения строжайше запрещено!!!
http://www.rootteam.f2s.com/

 


Copyright © "Internet Zone"info@izcity.com
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/. При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас.