Литмир - Электронная Библиотека

·

· «/html»

·

· #!/usr/local/bin/perl

· print "Content-type: text/html\n\n";

· print "«HEAD» «title»VIRTUAL SHOPs 'Hamburg'«/title»«/head»\n";

· print "«BODY» «H1»«CENTER»VIRTUAL SHOPs '«U»Hamburg«/U»'«/H1»«/CENTER»«HR»«BR»\n";

·

· parseparameters();

· $Name=$parameters{'name'};

· $Card=$parameters{'card'};

· $Passwd="None";

· $file="users.dat";

·

· open(F,"«$file") || die "File $file not exist!\n";

·

· while($f=«F»)

· {

· $tmp=«F»;

· if ("$Name\n"=~$f)

· {

· if ($tmp!~$Card)

· {

· print "«CENTER»«H1»Wrong Card Number«/H1»«HR»";

· die;

·}

·

· $Passwd=$tmp;

·}

·}

·

· if ($Passwd=~/None/)

· {

· open(F,"»$file");

· print F "$Name\n";

· print F "$Card\n";

· close(F);

· print "«B»New Buyer!«/B»«BR»\n";

·}

·

· print «EOF;

· Buyer:$Name

· «BR»

· Card:$Card

· «TABLE width=100% border=1»

· «TR»

· «TH»Product ID

· «TH»Product Name

· «TH»Purchase

· «TR»

· «TD»Y2ZA

· «TD»Mice

· «TD»1 dollar

· «TR»

· «TD»ZG6T

· «TD»Mice Pad

· «TD»5 dollar

· «TR»

· «TD»3 FZ9Y

· «TD»CD-ROM RACK

· «TD»7 dollar

· «/table»

· «HR»

· «CENTER»

· «form method="POST" action="buy.pl"»

· Product ID:

· «input type="text" size="30" maxlength="30" name="$Name"; value="Y2ZA"»

· «input type="submit" value="Buy"»

· «/form»

· EOF

·

·

·

· sub parseparameters(;$) {

· local $_ = shift || $ENV{"REQUEST_METHOD"};

· my $buffer;

·

· $buffer = $ENV{"QUERY_STRING"} if (/^[Gg][Ee][Tt]$/);

· read(STDIN, $buffer, $ENV{"CONTENT_LENGTH"}) if (/^[Pp][Oo][Ss][Tt]$/);

·

· @_ = split(/ amp;/, $buffer);

· for (@_) {

· tr/+/ /;

· s/%(…)/pack("c",hex($1))/ge;

· (my $key, my $value) = split(/=/, $_);

· $parameters{lc($key)} = $value;

·}

·}

·

Если ввести имя пользователя и код кредитной карточки [302] (например, “Kris Kaspersky; oc674-ui56”) и нажать кнопку “Welcome”, то сервер поприветствует нового покупателя и предложит ввести код товара для покупки. На первый взгляд все работает нормально…

Техника сетевых атак - img_70

Рисунок 025 Импровизированный виртуальный магазин

Для того чтобы совершить покупку от чужого имени требуется знать номер кредитной карточки, который известен только ее обладателю. Но в данном случае сервер хранит информацию обо всех посетивших его пользователях, и существует возможность «подсунуть» чужое имя взамен своего. Для изучения содержимого странички, необходимо выбрать в меню браузера пункт «Просмотри в виде HTML»

Техника сетевых атак - img_71

Рисунок 026 Просмотр содержимого странички в виде HTML

Появится следующий код, содержащий, по крайней мере, одну грубейшую ошибку, которая позволяет осуществлять покупки от имени чужих лиц.

· «TH»Product ID

· «TH»Product Name

· «TH»Purchase

· «TR»

· «TD»Y2ZA

· «TD»Mice

· «TD»1 dollar

· «TR»

· «TD»ZG6T

· «TD»Mice Pad

· «TD»5 dollar

· «TR»

· «TD»3 FZ9Y

· «TD»CD-ROM RACK

· «TD»7 dollar

· «/table»

· «HR»

· «CENTER»

· «form method="POST" action=" buy.pl "»

· Product ID:

· «input type="text" size="30" maxlength="30"

· name="Fox"; value="Y2ZA"»

107
{"b":"837821","o":1}