помогите разобратся с постом https://forum.antichat.ru/threads/50669/#post-1330014 у меня phpMyAdmin 2.11.9.2 кто сталкивался?
pomogite ispravit kod uyazvim k sql union/based time/blind proboval parametr intval() no togda nichego ne rabotaet PHP: <?phpheader('Content-type: text/xml; charset=UTF-8', true);// set the default timezone to use. Available since PHP 5.1//date_default_timezone_set('GMT');$id = $_REQUEST['id'];//$id = "Gabriela Mistral_Pablo Neruda";if (strpos($id,"_")) {$ids = explode("_",$id);$tipolinea = "plural";}else {$ids = array($id);$tipolinea = "singular";}$urllinea = "linea-".$id;$cacheado = false;$querycache = "SELECT texto FROM wp_extras_relacionados WHERE tipo = '$urllinea'";$resultcache = mysql_query($querycache);while ($rowcache = mysql_fetch_array($resultcache)) {$cacheado=true; echo $rowcache['texto'];}if ($cacheado==false) {// EMPIEZA obtener fecha minima y maxima para el contexto historico$sqlanioseventos = "";foreach ($ids as $escritor_ind) {$escritor_ind = addslashes($escritor_ind);$sqlanioseventos .= "escritor = '$escritor_ind' OR ";}$sqlanioseventos = substr($sqlanioseventos,0,-4);$queryminmax = "SELECT MAX(SUBSTRING(comienza,1,4)) AS maxcomienza, MIN(SUBSTRING(comienza,1,4)) AS mincomienza FROM wp_timelines WHERE $sqlanioseventos";$resultminmax = mysql_query($queryminmax);while ($rowchequeo = mysql_fetch_array($resultminmax)) {$mincomienza = $rowchequeo['mincomienza'];$maxcomienza = $rowchequeo['maxcomienza'];}$querymaxcontexto = "SELECT MAX(SUBSTRING(comienza,1,4)) AS maxcomienza FROM wp_timelines WHERE $sqlanioseventos AND (tipo_evento='Nacimiento' OR tipo_evento='Muerte')";$resultmaxcontexto = mysql_query($querymaxcontexto);while ($rowchequeocontexto = mysql_fetch_array($resultmaxcontexto)) {$maxcomienzacontexto = $rowchequeocontexto['maxcomienza'];}// TERMINA obtener fecha minima y maxima para el contexto historico// Contexto$ids[] = "Contexto";$mes['01'] = "enero";$mes['02'] = "febrero";$mes['03'] = "marzo";$mes['04'] = "abril";$mes['05'] = "mayo";$mes['06'] = "junio";$mes['07'] = "julio";$mes['08'] = "agosto";$mes['09'] = "septiembre";$mes['10'] = "octubre";$mes['11'] = "noviembre";$mes['12'] = "diciembre";$iconos['1'] = "icono-celeste.png";$iconos['2'] = "icono-verde.png";$iconos['3'] = "icono-amarillo.png";$iconos['4'] = "icono-azul.png";$iconos['5'] = "icono-turquesa.png";$iconos['6'] = "icono-rosa.png";$iconos['7'] = "icono-negro.png";$iconos['8'] = "icono-gris.png";$iconos['9'] = "icono-violeta.png";$iconos['10'] = "icono-fucsia.png";$iconos['11'] = "icono-marron.png";$iconos['12'] = "icono-blanco.png";$iconos['13'] = "icono-naranja.png";function birthday_poemas ($nacimiento,$acontecimiento){list($year,$month,$day) = explode("-",$nacimiento);$year_diff = date("Y",strtotime($acontecimiento)) - $year;//echo date("Y",$acontecimiento);$month_diff = date("m",strtotime($acontecimiento)) - $month;$day_diff = date("d",strtotime($acontecimiento)) - $day;if ($month_diff < 0) $year_diff--;elseif (($month_diff==0) && ($day_diff < 0)) $year_diff--;return $year_diff;}$data = '<data>';$data .= "\n";$icononro = 0;//if ($tipolinea=="plural") {foreach ($ids as $id) {$icononro++; $sqlcontexto=""; if ($id=="Contexto")$sqlcontexto = "AND SUBSTRING(comienza,1,4) >= $mincomienza AND SUBSTRING(comienza,1,4) <= $maxcomienzacontexto";$queryusuario = "SELECT * FROM wp_timelines WHERE escritor = '$id' $sqlcontexto ORDER BY id ASC";$resultusuario = mysql_query($queryusuario); while ($rowchequeo = mysql_fetch_array($resultusuario)) {$data .= "\n";$startdate = str_replace("-00-","-01-",$rowchequeo['comienza']);$startdate = str_replace("-00","-01",$startdate);$startdate .= ""; if ($rowchequeo['tipo_evento']=="Nacimiento")$nacimiento = $startdate;$data .= '<event start="'.date('r',strtotime($startdate)).'" ';$data .= "\n"; if ($rowchequeo['termina']!="0000-00-00 00:00:00") {$enddate = str_replace("-00-","-01-",$rowchequeo['termina']);$enddate = str_replace("-00","-01",$enddate);$enddate .= " GMT";$data .= 'end="'.date('r',strtotime($enddate)).'" '; }$title = $rowchequeo['titulo'];//if ($tipolinea == "plural") // $title = $rowchequeo['escritor'] . ": " . $title;$title = str_replace("\"",""",$title);$title = str_replace("&","&",$title);$data .= 'title="'.$title.'"'; //echo ' id ="'.$iconos.'"'; if ($id=="Contexto")$data .= ' icon="timeline/timeline_js/images/icono-rojo.png"'; else$data .= ' icon="timeline/timeline_js/images/'.$iconos[$icononro].'"'; if ($rowchequeo['imagen']!="")$data .= ' image="my links/'.$rowchequeo['imagen'].'"';$data .= '>';//$texto = str_replace("\"",""",$rowchequeo['texto']); //$texto = htmlentities($rowchequeo['texto']); $texto=""; if ($id=="Contexto")$texto .= "<strong>CONTEXTO HISTÓRICO</strong><br /><br />"; $texto .= $rowchequeo['texto']; if ($tipolinea == "plural" AND $id!="Contexto")$texto = "<div align=\"right\"><strong>(".$rowchequeo['escritor'] . ")</strong></div><br />".$texto;$texto = str_replace("<","<",$texto);$texto = str_replace(">",">",$texto);$texto = str_replace("&","&",$texto);$data .= $texto;$fechafinal = ""; if ($rowchequeo['termina']!="0000-00-00 00:00:00") {$fechafinal .= "desde "; }$fecha1 = substr($rowchequeo['comienza'],0,10);$fecha1 = explode("-",$fecha1); if ($fecha1['2']!='00') {$fechafinal .= $fecha1['2']; if ($fecha1['1']!='00')$fechafinal .= " de "; } if ($fecha1['1']!='00')$fechafinal .= $mes[$fecha1['1']]." de ";$fechafinal .= $fecha1['0']; if ($rowchequeo['termina']!="0000-00-00 00:00:00") {$fechafinal .= " hasta ";$fecha2 = substr($rowchequeo['termina'],0,10);$fecha2 = explode("-",$fecha2); if ($fecha2['2']!='00') {$fechafinal .= $fecha2['2']; if ($fecha2['1']!='00')$fechafinal .= " de "; } if ($fecha2['2']!='00')$fechafinal .= $mes[$fecha2['1']]." de ";$fechafinal .= $fecha2['0']; }$data .= htmlentities("<br /><strong>").'Fecha: '.$fechafinal.htmlentities("</strong>"); if ($rowchequeo['tipo_evento']!="Nacimiento") {//echo "nac".substr($nacimiento,0,10)."acon".substr($startdate,0,10)."..".strtotime(str_replace("-","/",substr($startdate,0,10))); //echo "**".str_replace("-","/",substr($startdate,0,10));if ( ($id!="Contexto" AND strpos($rowchequeo['tipo_evento'],"stumo")==false) OR ($id=="Contexto" AND $tipolinea=="singular")) {$data .= htmlentities("<br /><strong>Edad: ").birthday_poemas (substr($nacimiento,0,10),substr(str_replace("-","/",$startdate),0,10)).htmlentities(" años"); if ($rowchequeo['termina']!="0000-00-00 00:00:00")$data .= " al comenzar";$data .= htmlentities("</strong>"); } } if ($rowchequeo['lugar']!="") {$data .= htmlentities("<br /><strong>").'Lugar: '.$rowchequeo['lugar'].htmlentities("</strong><br />");$buscarlugar = str_replace(", ",",+",$rowchequeo['lugar']);$data .= htmlentities(utf8_decode('<iframe width="300" height="100" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.ar/maps?q=')).$buscarlugar.htmlentities(utf8_decode('&ie=UTF8&hq=&hnear=')).$buscarlugar.htmlentities(utf8_decode('&t=m&z=5&vpsrc=0&output=embed&iwloc=near"></iframe>')); }$data .= '</event>'; } // fin de while} // fin de foreach$data .= '</data>';echo $data;$data = addslashes($data);$query = "INSERT INTO wp_extras_relacionados (refid, itemid, tipo, texto) VALUES ('33','33', '$urllinea','$data')";$result = mysql_query($query) or die(mysql_error());}mysql_close($conectausuario);?>[php]
У меня вот это выдает при фрагментированной SQL Injection. HTML: SQL: select count(*) userNum from pre_common_member where username='qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqqqweqweqweqweqweg\' Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''qweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqqqweqweqweqweqweg\'' at line 1 Errno.: 1064
все должно сработать просто параметров должно быть 2 > WHERE login='\' and password='+union+select+1,2+--+'
походу там только один параметр login, селект видимо идёт перед insert, только не очень понятно зачем и что инсертится хотя тут похоже ничего не сделать, имхо раз селект падает - до insert дело не доходит, а пройти селект и заюзать фрагментацию похоже не получится в инсерте кроме логина что нить уходит?
Insert такой. Code: insert into pre_common_member(groupid,username,password,regdate,email,loginName) values(10,'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq','0000000',1474976900,'[email protected]','') Делаю я так. 1)Регистрирую любой акк на главной странице сайта,допустим "[email protected]" и пароль "123" (регистрация прошла). 2)Грузится вторая страница,на ней мне предлагают ввести ник,ввожу q[64]' мне выдает вот это Code: SQL: select count(*) userNum from pre_common_member where username='qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/' Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/'' at line 1 Errno.: 1064 Вот только не могу понять почему вместо пароля идут 0000000,хотя пароль же 123. Движок сайта Discuz!
Получил доступ к юзеру с грантами только на селект. Code: +---------------------------------------------------------------------------------------------------------+ | Grants for user@% | +---------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD '*' | | GRANT SELECT ON `phpbb3`.* TO 'user'@'%' | +---------------------------------------------------------------------------------------------------------+ База соответственно от форума phpbb3. Цель либо залить шелл либо повысить привилегии. Есть идеи что можно предпринять? Из очевидных вариантов вижу только брут пароля админа, а затем залитие шелла через админку форума. Как я понял в базе еще хранятся сессии, но походу они привязаны к IP, ибо подставновка кук не работает, либо я криво это сделал.
$file = trim($_GET['file']); $folder = 'include/'; if(file_exists($folder.$file)) можно ли как-то обойти? чтобы прочитать файл из директории выше
а в чем проблема? trim не удаляется точки и слеши, впрочем и file_exists файлы не читает странный кусок кода!
Не полностью скинул, далее файл качается по такому адресу, если в GET вставить имя файла, то он отдается из директории include
ну должно работать, хз может там open_basedir или таки там подставляется расширение файла, а ты его пытаешь нул байтом откинуть( а его trim режет )
Я думал сканер какой то запрос проложил что вывел инфу о MySQL Кстати мож ты объяснишь Короче сканил один магаз так они когда заходили в админку им показывало акаунтикс XSS и сделать они короче не чего не могли ) Это что было я так и не понял
User 'wor647_f' has exceeded the 'max_queries_per_hour' resource (current value: 100000) вот эта строка всё объясняет, там лимит запросов для mysql юзера когда заходили в админку... ну вангую такую историю, среднестатистический мазагин с само собой всякими плагинами, для магазина очень важно его seo, и где то в админке должна отображаться инфа о том кто шарится по сайту( рефа/юзер агент ), вероятно сканер пихал xss в рефу или юзер агент, ну она(xss) и отработала либо банально админка показывает неудачные попытки входа(обычно там показывается логин с которым пытались авторизоваться) - фильтрации если нет, то xss вообще вариантов дофига может быть