Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#4221
CitarTirale un echo... si el user no tiene o desactivo el js te las vas a pelar...
Claro, por ejemplo en el CMS de Freeze no me funciona ningún botón ya que todo funciona via javascript, lo que podrías hacer es implementar doble sistema, uno con javascript y otro sin javascript, por ejemplo..


Código (php) [Seleccionar]
<script>funciones();</script>
<noscript>Si no navegas con javascript activado haz click <a href="index.php?accion=desactiva_js">ac&aacute;</a></noscript>

// .. .. ..

<?php
// .. .. ..

if($_GET['accion'] == 'desactiva_js'){
 
$_SESSION['scripts'] = 'false';
}

// .. .. ..

if(!$_SESSION['scripts']){
 
mostrar_acciones_con_js();
}else{
 
mostrar_acciones_sin_js();
}

// .. .. ..
?>


Se entiende?  :P
#4222
PHP / Re: fsockopen y host "maldito"
14 Octubre 2008, 15:23 PM
Está mal escrito el nombre del último servidor:
Código (php) [Seleccionar]
<?php
function testport($url$port)
{
 
$servidor_checkport fsockopen$url  $port  $errno$errstr1);
if (!
$servidor_checkport)
{
 
$servertest'<b><font color="#FF0000">Offline</font></b><br/>';
echo 
$errno $errstr;
 
}
 
 else
 {
 
$servertest'<b><font color="#339966">Online</font></b><br/>';
 
}
 
return 
$servertest;
 
}
 
$testingport testport("www.web1.net",80);
echo 
$testingport;
$testingport testport("www.web2.net",80);
echo 
$testingport;
$testingport testport("ip shoutcastserver",80);
echo 
$testingport;
$testingport testport("ip shoutcastserver",8010);
$testingport;
?>


Fijate en 'ip shoutcastserver' recuerda que un nombre de dominio o DNS consta de carácteres consecutivos sin espacios en blanco.

Prueba con esto:
Código (php) [Seleccionar]
<?php
// .. ..

/*
Reemplaza ip.shoutcastserver por la ip real y
asegurate que el protocolo sea TCP y no UDP
*/

testport("www.web1.net",80);
testport("www.web2.net",80);
testport("ip.shoutcastserver",80);
testport("ip.shoutcastserver",8010);

function 
testport($url$port){
 if(!
$socket fsockopen($url$port$error$error_descripcion1)){
  echo 
'<b><font color="#FF0000">Offline</font></b><br/>';
  echo 
'Error:['.$errno.$errstr.']<br />';
  return 
false;
 }else{
  
fclose($socket);
  echo 
'<b><font color="#339966">Online</font></b><br/>';
  return 
true;
 }
}

// .. ..
?>
#4223
Yo no le respondí porque no le había entendido XD pero viendo la respuesta así es, solo debe devolver el contenido puro del script sin anteponer <script> ni cerrar con </script> tal como aparece en el adsense de google... supongo que sopiaste el código y lo pegaste tal cual.

Si lo haces quedaría masomenos así:

Código (html4strict) [Seleccionar]
<script>
<script>
contenido();
</script>
</script>


Algunos hacen esto para hacer un poco mas interactivos los scripts devolviendo mas de un ads e ir variando publicidades que son de un sitio a otro al igual que las hojas de estilo para hacer un theme mas interactivo como lo hace EYEOS.
#4224
PHP / Re: [Proyecto] GreenCode-Coder V1.1.1
13 Octubre 2008, 09:08 AM
Hola IngAmc, gracias, ya lo puse.  ;D

También pienso crear dentro del mismo conversor un conversor de XSS  :P por ejemplo en buffer das lo siguiente:

Citar<a href="http://$xss">test</a>

El sistema intentará escapar y te dará el resultado:

Citar$xss = ">[XSS]

:P Básico pero útil para gente que comienza en esto.
#4225
PHP / Re: Pequeños trucos en PHP
13 Octubre 2008, 09:04 AM
Transformación de Strings en múltiples formas

Código (php) [Seleccionar]
// Powered by GreenCode - WHK
function codifica_base64_gz($buffer){
$buffer = bin2hex(base64_encode(gzcompress($_POST['buffer'])));
$separador = 16; // Editable, separador de 16 bytes.
$separa = 0;
for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){
  if($separa == 0){
   $dump .= '"';
  }
  $dump .= '\x'.$buffer[$cuenta].$buffer[$cuenta+1];
  $separa++;
  if($separa == $separador){
   $dump .= '"';
   if($cuenta != (strlen($buffer))-2){
    $dump .= '.'."\n";
   }
   $separa = 0;
  }
}
if($dump[strlen($dump)-1] != '"'){
  $dump .= '"';
}
return
"\x3c\x3fphp\n// ...\n\n/* El retorno es tu buffer */".
"\$str = gzuncompress(base64_decode(\n$dump\n));\n\n// ...\n\x3f\x3e";
}

function ascii_a_png($buffer){
return
"\x3c\x3fphp\n// ...\n\n".
"/* El retorno es una imagen */\n".
"\$handle_img = imagecreate(".(int)(strlen($buffer) * 9).", 30);\n".
"\$fondo = imagecolorallocate(\$handle_img, 255, 255, 255);\n".
"\$color_texto = imagecolorallocate(\$handle_img, 0, 0, 255);\n".
"imagestring(\$handle_img, 5, 0, 0, base64_decode(\"".base64_encode($buffer)."\"), \$color_texto);\n".
"header(\"Content-type: image/png\");\n".
"imagepng(\$handle_img);\n\n".
"// ...\n\x3f\x3e";
}

function sqlchr($buffer){
for($cuenta=0;$cuenta<strlen($buffer);$cuenta++){
  $dump .= 'char('.ord($buffer[$cuenta]).')';
  if((strlen($buffer) - 1) != $cuenta){
   $dump .= ',';
  }
}
return $dump;
}

function sqldword($buffer){
return 'funcion(0x'.bin2hex($buffer).')';
}

function urlencode_total($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){
  $dump .= '%'.$buffer[$cuenta].$buffer[$cuenta+1];
}
return $dump;
}

function unescape_javascript($buffer){
return '<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
document.write(unescape("'.urlencode_total($buffer).'"));
</SCRIPT>';
}

function php_encode($buffer){
$buffer = bin2hex(base64_encode(gzcompress($_POST['buffer'])));
$separador = 16; // Editable, separador de 16 bytes.
$separa = 0;
for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){
  if($separa == 0){
   $dump .= '"';
  }
  $dump .= '\x'.$buffer[$cuenta].$buffer[$cuenta+1];
  $separa++;
  if($separa == $separador){
   $dump .= '"';
   if($cuenta != (strlen($buffer))-2){
    $dump .= '.'."\n";
   }
   $separa = 0;
  }
}
if($dump[strlen($dump)-1] != '"'){
  $dump .= '"';
}
return
"\x3c\x3fphp\n// ...\n".
"/*\nRecuerda que no debes anteponer '\x3c\x3f' ni terminar con '\x3f\x3e'".
"Elimina este comentario.\n*/\n".
"eval(gzuncompress(base64_decode(\n$dump\n)));\n\n// ...\n\x3f\x3e";
}

function decodifica_base64_gz($buffer){
$buffer1 = str_replace('"',' ',$buffer);
$buffer1 = str_replace('.',' ',$buffer);
$buffer1 = explode('\x',$buffer);
$buffer1[0] = '';
for($cuenta=0;$cuenta<count($buffer1);$cuenta++){
  if(strlen($buffer1[$cuenta]) == '2'){
   $buffer2 .= ' '.$buffer1[$cuenta];
   $procesando = true;
  }else{
   if($procesando){
    $buffer2 .= ' '.$buffer1[$cuenta][0].$buffer1[$cuenta][1];
   }
  }
}
$buffer2 = explode(' ',$buffer2);
for($cuenta=0;$cuenta<count($buffer2);$cuenta++){
  if(strlen($buffer2[$cuenta]) == '2'){
   $buffer3 .= $buffer2[$cuenta];
  }
}
return gzuncompress(base64_decode(hexa_a_str($buffer3)));
}

function ascii_a_sha1($buffer){
return sha1($buffer);
}

function hexa_a_str($buffer){
$buffer = preg_replace("/[^a-zA-Z0-9s]/", "", str_replace('\x',' ',$buffer));
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= chr(hexdec($buffer[$cuenta].$buffer[($cuenta+1)]));
}
return $dump;
}

function ascii_a_decimal($buffer){
for($cuenta=0;$cuenta<strlen($buffer);$cuenta++){
  $dump .= ord($buffer[$cuenta]).' ';
}
return $dump;
}

function ascii_a_html_sin_s($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= '&#'.hexdec($buffer[$cuenta].$buffer[$cuenta+1]);
}
return $dump;
}

function ascii_a_html_con_s($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= '&#x'.$buffer[$cuenta].$buffer[$cuenta+1].';';
}
return $dump;
}

function generar_htpasswd_sha($user,$pass){
return $user.':{SHA}'.base64_encode(sha1($pass, TRUE));
}

function generar_htpasswd_md5($user,$realm,$pass){
return $user.':'.md5($user.':'.$realm.':'.$pass);
}

function hexadecimal_a_decimal($buffer){
$buffer = preg_replace("/[^a-zA-Z0-9s]/", "", str_replace('\x',' ',$buffer));
for($cuenta=0; $cuenta<strlen($buffer); $cuenta++){
  if(ctype_xdigit($buffer[$cuenta].$buffer[$cuenta+1])){
   $dump .= hexdec($buffer[$cuenta].$buffer[$cuenta+1]).' ';
   $cuenta++;
  }
}
return $dump;
}

function octal_a_decimal($buffer){
$buffer = preg_replace("/[^0-9 s]/", "", $buffer);
$buffer = explode(' ',$buffer);
for($cuenta=0; $cuenta<(count($buffer)-1); $cuenta++){
  $dump .= octdec($buffer[$cuenta]).' ';
}
return $dump;
}

function ascii_a_hexadecimal($buffer){
return chunk_split(bin2hex($buffer),2,' ');
}

function ascii_a_octal($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= hexdec($buffer[$cuenta].$buffer[$cuenta+1]).' ';
}
$dump3 = explode(' ',$dump);
for($cuenta=0; $cuenta<(count($dump3)-1); $cuenta++){
  $dump2 .= decoct($dump3[$cuenta]).' ';
}
return $dump2;
}

function debugger(){
global $dump;
if($dump){
  echo htmlspecialchars($dump,ENT_QUOTES);
}else{
  if($_POST['buffer'] and $_POST['algoritmo']){
  echo "No hay datos que devolver";
  }
}
}


Uso:

Código (php) [Seleccionar]
<?php
// .. ..
$dump ascii_a_png('Hola Elhacker.net'); // Procesa el String.
debugger(); // Imprime en pantalla el resultado evitando un XSS.
// .. ..
?>


Debido a una incompatibilidad de SMF con carácteres HTML como & y # las dos funciones
ascii_a_html_sin_s()
ascii_a_html_con_s()
No se ven como debieran. Deben aparecer de la siguiente manera:

function ascii_a_html_sin_s($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= '&#'.hexdec($buffer[$cuenta].$buffer[$cuenta+1]);
}
return $dump;
}

function ascii_a_html_con_s($buffer){
$buffer = bin2hex($buffer);
for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){
  $dump .= '&#x'.$buffer[$cuenta].$buffer[$cuenta+1].';';
}
return $dump;
}
#4226
PHP / Re: XAMPP 1.6.3 como usarlo?
12 Octubre 2008, 20:36 PM
Xampp o Lampp es un pack donde vienen los servidores (apache, mysql, etc), el vbulletin es un sistema de foros en php, no tiene nada que ver.

Si quieres aprender a instalar vbulletin debes buscar vbulletin en google y encontrarás la web proncipal de ese sistema y por ahi debe aparecer como instalarse.
#4227
PHP / Re: saber en que fila seleccione
12 Octubre 2008, 20:28 PM
Creo que ya estubo mas que claro en las primeras dos respuestas,

CitarPon el id en el link del boton y en tu php de eliminación haz un query delete where id=numero.
Citar<?
while($row = mysql_fetch_array($que))
{
?>
<input type='button' value='eliminar' onclick="javascript:document.location.href='elimina.php?id=<? echo $row['codigo]']; ?>';">
<?
}
?>

Utilizar javascript no tiene nada de inseguro, la seguridad depende del programador para validar esa entrada, por ejemplo se supone que solo tu tendrás acceso a modificar aquellas filas o a quien tu designes con algún tipo de sesión, etc. Si quieres evitar alguna inyección de tipo SQL podrías establecer que la variable sea solo numérico (int)$id, el javascript que expuso haddes lo único que hace es una pequeña redirección para validar la entrada en metodo GET elimina.php?id=[id] y si alguien decide modificar ese ID podrá hacerlo desde el formulario de todas formas, la idea no es restringir desde el explorador sino desde el servidor si es que quieres evitar problemas de seguridad, todo esta en la buena programación php accediendo a eliminar la fila solamente si el usuario es permitido y/o el id realmente existe para evitar devolver valores nulos.

Piendo que lo que buscas está mas ayá de lo que expones.


Código (php) [Seleccionar]
<?php
// .. ..

if($_GET['borrar']){
 
$referer = @explode("?",$_SERVER[HTTP_REFERER]);
 if(
$_POST and !eregi($referer[0], "http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF])){
  
header("Ataque-detenido: XSRF");
  
header("location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  exit(
1);
 }
 if(
verifica_eliminar()){
  
header('Estado: Columna eliminada');
  
header('location: http://'.$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  exit(
0);
 }else{
  
header('Estado: Sin acciones');
  
header('location: http://'.$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
 exit(
1);
 }
}else{
 include(
'formulario.php');
 exit(
0);
}

function 
verifica_eliminar(){
 if(
$_SESSION['es_admin']){
  
$sql 'DELETE FROM `database` WHERE `tabla`.`id` = \''.(int)$_GET['borrar'].'\';';
  if(
mysql_query($sql,$conectar_sql)){
   return 
true;
  }else{
   return 
false;
  }
 }else{
   return 
false;
 }
}

// .. ..
?>
#4228
PHP / Re: XAMPP 1.6.3 como usarlo?
12 Octubre 2008, 20:05 PM
Busca xampp en google, el primer resultado te da la web del autor con el manual y todo:

http://www.apachefriends.org/en/xampp-linux.html

CitarPictures of XAMPP for Linux

Installation in 4 Steps

Step 1: Download
Step 2: Installation
Step 3: Start
Step 4: Test

Si no entiendes ingles usa el traductor de google:

http://translate.google.cl/translate?u=http%3A%2F%2Fwww.apachefriends.org%2Fen%2Fxampp-linux.html&sl=en&tl=es&hl=es&ie=UTF-8

CitarFotos de XAMPP para Linux

Instalación en 4 pasos

Paso 1: Descargar
Paso 2: Instalación
Paso 3: Inicie
Paso 4: Test
#4229
PHP / Re: Sistema de usuarios con logueos unicos
12 Octubre 2008, 20:02 PM
Un par de post mas abajo aparece alguien con la misma duda y con la respuesta incluida:

http://foro.elhacker.net/php/tutorial_crear_area_restringida_con_php_en_nuestra_web-t229893.0.html
#4230
Listo  ;D

Código (php) [Seleccionar]

<?php 
// .. ..
function decodifica_base64_gz($buffer){
 
$buffer1 str_replace('"',' ',$buffer);
 
$buffer1 str_replace('.',' ',$buffer);
 
$buffer1 explode('\x',$buffer);
 
$buffer1[0] = '';
 for(
$cuenta=0;$cuenta<count($buffer1);$cuenta++){
  if(
strlen($buffer1[$cuenta]) == '2'){
   
$buffer2 .= ' '.$buffer1[$cuenta];
   
$procesando true;
  }else{
   if(
$procesando){
    
$buffer2 .= ' '.$buffer1[$cuenta][0].$buffer1[$cuenta][1];
   }
  }
 }
 
$buffer2 explode(' ',$buffer2);
 for(
$cuenta=0;$cuenta<count($buffer2);$cuenta++){
  if(
strlen($buffer2[$cuenta]) == '2'){
   
$buffer3 .= $buffer2[$cuenta];
  }
 }
 return 
gzuncompress(base64_decode(hexa_a_str($buffer3)));
}
// .. ..
?>


Si alguien intenta enviar datos inválidos entonces la función de base64 o gzuncompress devolverá un estado false por lo tanto devolverá el mensaje "No hay datos que devolver".

También se eliminó todo el buffer de salida con carácteres de escape html con htmlspecialchars y se procesó una sola ves en la función debugger()

Sistema actualizado.