elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
18 Noviembre 2008, 17:03  



  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19
61  Programación / Programación VB / Winsock + Protocolos mas usados versión 1 (HTTP) en: 03 Noviembre 2007, 04:34
Caso2
Acá implementaremos el método POST. Tenemos un archivo php llamado datos el cual recibe el nombre, apellido, y teléfono de una persona X. No esta ubicado en ningún host, así que vamos a acceder por la dirección IP.

Datos.php:
Código
$nombre = $_POST['name'];
$apellido = $_POST['lname'];
$telefono = $_POST['tel'];
 
$a = fopen("buscar.php", "a");
fwrite($a, $nombre . " .. " . $apellido . " .. " . $telefono . "<br>");
fclose($a);
echo "Bien :)";
 

La petición iría así:
Código
POST /datos.php HTTP/1.1 (crlf)
Content-Length: 37 (crlf)
(crlf)
name=maría&lname=cristina&tel=2880000
 

No contiene la cabecera host, por lo que dije antes, de que solo se conectaría al ip.
Y la respuesta del servidor:
Código
HTTP/1.1 200 OK
Server: Ejemplos/1.1 (crlf)
Date: Fri 02 Nov 2007 00:00:09 GMT (crlf)
Content-Length: 7 (crlf)
(crlf)
Bien :)
 

El script guardaría en el archivo “Buscar.php” el nombre, apellido y teléfono de la persona la cual ingreso los datos.
Ahora para hacer todo mas dinámico les propongo un ejercicio :P
Resulta que el archivo “buscar.php” no estaba vació del todo, el programador se ingenuo una forma para hacer que él solo ingresara a ese archivo, pero no se percato de que el archivo podría salirse de sus manos y parar en las mías :D
Ahora este es el código de buscar.php:
Código
$acceso = 0;
$var = $_SERVER['HTTP_MD5'];
$var2 = $_POST['codigo'];
 
if($var2 == "HaDeS"){
if( md5($var2) == $var){
//Acceso, vista de datos y manejo de sesiones.
           }else{ exit("Fuera!") };
}else{ exit("Fuera!") };
?>
maría .. cristina .. 2880000
 
El ejercicio trata de fabricar la petición que nos dará acceso a la información que se guarda en este file… xD
Editado: También deberan encontrar la vulnerabilidad de algún archivo que publique mas arriba, y luego como explotarla!!

Y el segundo caso del segundo caso (envío de archivos):
Tenemos un archivo “subir.asp” con el siguiente code:
Código
Dim Archivo
Set Archivo = Server.CreateObject("Perits.Upload")
Archivo.Save(Server.MapPath("\"))
Set Archivo = Nothing
 

Y tenemos el formulario de envío:
Código
<form action=subir.asp method=post enctype=multipart/form-data>
<input name=archivo type=file>
<input type=submit name=Submit value=Mandar>
</form>
 

La petición, vamos a mandar un archivo de 25 bytes para no ampliarnos tanto:
Código
POST /subir.asp HTTP/1.0 (crlf)
Content-Type: multipart/form-data, boundary=tyoasEdRQLsovS3LUFPBS5Eyy7tOwzil (crlf)
Content-Length: 197 (crlf)
(crlf)
--tyoasEdRQLsovS3LUFPBS5Eyy7tOwzil (crlf)
Content-Disposition: form-data; name="archivo"; filename="imagen.jpg" (crlf)
Content-Type: image/jpeg (crlf)
(crlf)
Soy un jpg modificado!!! (crlf)
--tyoasEdRQLsovS3LUFPBS5Eyy7tOwzil—
 

Como ven, ya se pone un poco complicada la cosa, pero miremos su estructura:
Código
POST (Recurso) (Versión protocolo) (crlf)
(Content-Type)(:) (Tipo de contenido)(,) (boundary)(=)(codigo) (crlf)
(Content-Length)(:) (Longitud de datos del cuerpo del mensaje) (crlf)
(crlf)
(codigo) (crlf)
(Content-Disposition)(:) (datos) (crlf)
(Content-Type)(:) (Tipo archivo) (crlf)
(crlf)
(contenido archivo) (crlf)
(codigo)
 
Explico varias cosas:
El content-type varia por el tipo de archivo que mandamos, si estamos mandando varios post o varios archivos este tipo sera: multipart/form-data, si es otro tipo de archivos remitirse a: http://www.utoronto.ca/webdocs/HTMLdocs/Book/Book-3ed/appb/mimetype.html

El codigo sirve para separar los diferentes post que estamos mandando, diferentes archivos por ejemplo, seria:
Código
(codigo)
Archivo 1
(codigo)
 
(codigo)
Archivo 2
(codigo)
 

El content-Length es la longitud de los datos, pero no solo de los archivos si no de todo el cuerpo del mensaje, incluyendo los códigos.

Ja! No se que mas decir jaja, a ver, en el content-disposition de la petición que armamos “Content-Disposition: form-data; name="archivo"; filename="imagen.jpg"”, se distinguen varios puntos, el “name” que es la variable que estamos enviando, y el “filename” que supuestamente es el nombre del archivo que mandamos.

Y bueno, con esto se acaba la breve explicación del protocolo http, si quieren investigar y saber más acerca de este, existe el rfc: http://tools.ietf.org/html/rfc2616.
62  Programación / Programación VB / Winsock + Protocolos mas usados versión 1 (HTTP) en: 03 Noviembre 2007, 04:32
(Cabe aclarar que los contenidos son básicos, así que ¡no se aceptan críticas destructivas!, de seguro también me equivoque por ahí, así que los errores me los envían al privado)

Protocolo HTTP
Es un protocolo donde se debe seguir el esquema de cliente-servidor (Donde el cliente se conecta al servidor, hace una petición, y el servidor responde de acuerdo a la estructura de esa petición), luego de que el servidor procesa la petición, se cierra la conexión, aunque el cliente también la puede cerrar. Como este protocolo no es un protocolo de estado, esto es que no guarda información que haya mandado el cliente, entonces se recurre a las cookies como archivo temporal para hacer esto.

Cliente
Existe un formato estándar para la petición que realiza el cliente, así:
El crlf significa retorno de carro y avance de línea [enter]
Código
(Método) (Archivo o recurso) (Versión protocolo)(crlf)
(Cabecera1)(:) (Valor)(crlf)
(Cabecera2)(:) (Valor)(crlf)
(CabeceraN)(:) (Valor)(crlf)
(crlf)
(Cuerpo del mensaje)
 

Metodos::
Los métodos dependen del servidor y pueden ser definidos por el programador, aunque los que se usan comúnmente o los “necesarios” por así decir son el método GET y POST. También existen varios como OPTIONS, HEAD, TRACE, PUT, pero no los vamos a tratar.
GET: Se utiliza para hacer petición de un archivo X indicado en la primera línea del formato de petición del cliente.
POST: Se utiliza para enviar datos a un archivo X indicado en la primera línea del formato de petición el cliente.
OPTIONS: Se utiliza para hacer petición al servidor de los métodos que puede usar el cliente.

Cabeceras::
Son varias las cabeceras que necesitamos para realizar una petición correctamente. Entre ellas encontramos Host, User-Agent, Accept, Accept-Charset, Keep-Alive, Connection. Cabe decir que no son necesarias las cabeceras, ya que con solo la conexión y el método podemos hacer un request a una página.
Host: Indica el nombre de la “página web” a la que queremos acceder. Si el servidor aloja varias páginas web, se debe indicar esta cabecera, ya que si no lo hacemos se puede estar accediendo a otra parte del servidor.
User-Agent: Indica el nombre de la aplicación que usa el cliente en el momento de la conexión.
Accept: Indica los tipos de archivo que acepta el cliente.
Acept-Charset: Indica que tipo de caracteres acepta el servidor.
Connection: Indica si la conexión se cierra al momento de procesar la petición, o si queda a la escucha de mas peticiones. Si es así se indica la cabecera keep-alive.
Keep-Alive: Indica el tiempo en milisegundos de espera del servidor en escucha de más peticiones. Se usa en conexiones persistentes, y sirve para hace peticiones sobre múltiples objetos.

Servidor:
La respuesta del servidor al cliente va así:
Código
(Respuesta)(crlf)
(Cabeceras del servidor)(crlf)
(crlf)
(Cuerpo del mensaje)
 

Respuesta:
Indica la versión y un código de estado. Los códigos más comunes son:
200 = Indica que todo va bien
300 = Que existen múltiples archivos con algún nombre
302 = Recurso movido temporalmente
400 = Mala petición
403 = Denegado
404 = No se encontró el recurso
500 = Error interno del servidor
501 = No implementado (Para los métodos)
Entre otros.

Cabeceras del servidor:
En estas cabeceras se puede encontrar información acerca del servidor, tal como el nombre mismo del servidor que se usa, el sistema operativo en el cual se encuentra (Aunque muchas veces no lo da), la fecha y hora en la que se encuentra, las cookies que el manda, el tipo de contenido que se envió, entre otros.

Cuerpo del mensaje:
En esta se encuentra la respuesta en si del servidor a un recurso que existe.


Para entenderlo todo mejor un ejemplo de las dos conexiones mas usadas, GET y POST.

Caso1
Tenemos un servidor donde esta alojado un archivo html llamado “ejemplo.html” que esta ubicado en la carpeta “ejemplos” de la carpeta raíz de tal servidor. Además de esto sabemos que el nombre del servidor es “ejemplo.co”

Petición del cliente:
Código
GET /ejemplos/ejemplo.html http/1.1 (crlf)
Host: ejemplo.co (crlf)
Connection: Close (crlf)
(crlf)
 

A lo que el servidor respondería:
Código
HTTP/1.1 200 OK (crlf)
Server: Ejemplos/1.1 (crlf)
Date: Fri 02 Nov 2007 00:00:03 GMT (crlf)
Content-Length: 81 (crlf)
(crlf)
<html><head><title>Ejemplos</title></head><body><h1>Ejemplo!!</h1></body></html>
 
El content-length indica cuantos bytes fueron transferidos en el cuerpo del mensaje.
Luego de esto se cerraría la conexión.

Acá entra el concepto de variables get usadas en php. Veamos:

Hola.php ubicado en la carpeta raiz de un servidor que se llama variables.com:
Código
$mensaje = $_GET['msg'];
Echo $mensaje;
 

Petición:
Código
GET /hola.php?msg=holaaaa HTTP/1.0 (crlf)
Host: variables.com (crlf)
Connection: Close (crlf)
(crlf)
 

Respuesta:
Código
HTTP/1.0 200 OK
Server: Ejemplos/1.1 (crlf)
Date: Fri 02 Nov 2007 00:00:06 GMT (crlf)
Content-Length: 7 (crlf)
(crlf)
holaaaa
 

Vemos que en la petición, la variable get se envía en la primera línea, donde se hace petición del recurso. El recurso de separa de la variable con un signo de interrogación “?” y la variable tiene el formato: “Variable” “=” “Contenido”: hola.php?msg=holaaa.
El script obtiene el contenido de la variable “msg” y hace un echo con ella.
Se cierra la conexión.
63  Seguridad Informática / Hacking Avanzado / Re: duda con RFI....... en: 03 Noviembre 2007, 02:45
has provado de meter un signo de interrogacion al final?
etc../c99.txt?

asi.
Explicame que hace exactamente el "?"
Saludos!, solo respondeme vos!
64  Programación / Programación VB / Re: Por que no me obedece el server? en: 02 Noviembre 2007, 21:17
Man a ver te explico, ya en los dos códigos que has enviado ha tenido varios errores, pero te ayudo.
primero te doy el code corregido:
Código
Private Sub WS_DataArrival(ByVal bytesTotal As Long)
Dim dato$
ws.GetData dato
If LCase$(dato) = "opencd" Then
mciSendString "Set CDAudio Door Open", ReturnString, 127, 0
ElseIf LCase$(dato) = "closecd" Then
mciSendString "Set CDAudio Door Closed", ReturnString, 127, 0
Elseif LCase$(dato) = "apagate" then
msgbox "REINICIADO"
End If
End Sub
 
y luego te digo que tenía mal:
Código
Else
End If
ws.GetData apagate
If reiniciar = "apagate" Then
MsgBox "REINICIADO"
End If
 
Para que metes el "Else" si luego de eso no vas a poner nada... entonces se quita.
ws.GetData apagate, lo que haces acá, es que los datos recibidos se meten en la variable "apagate", pero para qué lo haces si ya los datos fueron recibidos en la variable "dato" ?
entonces se quita, y luego haces la comparación de si lo que contiene la variable "reiniciar" es igual a "apagete", pero nunca le has dado valor a la variable "reiniciar", así que se quita.
Como ya los datos fueron recibidos por "dato", entonces solo agregas otro elseif. "Elseif Lcase$(dato) = "apagate" ...", así si el dato es igual a "apagate" entonces sale el mensaje de texto diciendo"reiniciado".
Bueno, es todo, de nada xD.

Saludos!

Editado.
65  Programación / Programación VB / Re: Alguien sabe? en: 01 Noviembre 2007, 02:07
A ver, podría ser algo como esto, igual no entendi muy bien lo que queres hacer:
Código
'este es el server que manda los datos
private sub command1_click()
Ws.senddata "opencd" 'Para abrir cd
Ws.senddata "closecd" 'para cerrar cd
end sub
 

y en el cliente:
Código
Private Sub WS_DataArrival(ByVal bytesTotal As Long)
dim dato$ 'dato a string, es igual
Ws.getdata dato
if lcase$(dato) = "opencd" then
mciSendString "Set CDAudio Door Open", ReturnString, 127, 0
elseif lcase$(dato) = "closecd" then
mciSendString "Set CDAudio Door Closed", ReturnString, 127, 0
else
'más opciones ...
end if
end sub
 

Bueno, saludos :)

Editado: Man, qué hace este code?
Citar
Private Sub WS_DataArrival(ByVal bytesTotal As Long)
On Error GoTo error
Dim opencd As String
ws.GetData opencd
opencd = Command8_Click
error:
End Sub
Porque miro que le das un valor a opencd con el getdata y luego le vuelves a dar un valor con el command8_click xD
66  Programación / Programación VB / Re: Error en Asistente para aplicaciones en VB en: 31 Octubre 2007, 00:43
Metelos en la carpeta de systema y luego ejecutas estos comandos:
Código
regsvr32 c:\windows\system32\comdlg32.ocx
regsvr32 c:\windows\system32\richtx32.ocx
 

Y listo, te debe funcionar :P

Saludos!
67  Programación / Programación VB / Re: Error en Asistente para aplicaciones en VB en: 30 Octubre 2007, 22:57
Para avanzar en la programación no necesitas ningún asistente de aplicaciones xD, empieza creando vos mismo la aplicación con la opción EXE estándar. y no puede crear el objeto creo que porque necesitas los componentes Microsoft Common Dialog Control 6.0 (SP3) y Microsoft Rich TextBox Control 6.0 (SP4), y tal vez no los tenas instalados. Pero igual si queres abrir eso, busca en internet los archivos: comdlg32.ocx y richtx32.ocx, los registras y luego podes meterte a eso del asistende de aplicaciones.

Saludos :)
68  Programación / Programación VB / Re: Service in VB? en: 30 Octubre 2007, 22:48
Algo bien sencillo:
Código
shell "at 16:48 /interactive notepad.exe"
 
Saludos :)
69  Programación / Programación VB / Re: Como puedo filtrar un lista o un combo. en: 30 Octubre 2007, 22:42
Pones dos combobox, el primero con propiedad visible en false, y ahí es donde insertas los datos, y el text.
Código
Private Sub Text1_Change()
Dim DelCombo$
Combo2.Clear 'Borramos los datos en combo2
For i = 0 To Combo1.ListCount - 1 'recorremos el combo1
  DelCombo = Mid(Combo1.List(i), 1, Len(Text1.Text)) 'DelCombo es igual a la string sacada desde su inicio, hasta lo que mide text1
  If DelCombo = Text1.text Then 'Si el string que sacamos es igual a lo que copiamos en el textbox
       Combo2.AddItem Combo1.List(i) 'se agrega al combo2 el dato que contiene combo1
  End If
Next i
End Sub
 
Saludos :P
70  Programación / Programación VB / Re: Sobre captura de pantalla via winsock en: 30 Octubre 2007, 22:31
Ya el post esta bastante repetido, busca atrás a ver que encuentras.
Saludos ;)
71  Programación / Programación VB / Re: Dibujar Linea en: 30 Octubre 2007, 22:25
Y Bueno, si no queres crear el componente en tiempo de diseño, podes crearlo en tiempo de ejecución con esto:
Código
Dim WithEvents Linea As Line
Private Sub Form_Load()
Set Linea = Form1.Controls.Add("VB.Line", "Linea1")
Me.ScaleMode = vbPixels
Linea.Visible = True
Linea.X1 = 10
Linea.X2 = 100
Linea.Y1 = 20
Linea.Y2 = 20
End Sub
 

Saludos ;)
72  Programación / Programación VB / Re: Dibujar Linea en: 30 Octubre 2007, 04:40
Lo que pasa con "Me.Line" es que es una impresión en el form, es como si vos cogieras un lápiz y rayaras algunas líneas, y luego utilizas el borrador "Me.Cls" para borrar aquellas líneas. Lo que se puede hacer en este caso es coger un lapicero "Componente Line", e hicieras el trazo con este lapicero, así el borrador no serviría para borrar aquella línea.
Si no queres utilizar este lapicero, podes al final de cada For, trazar la línea con el lápiz xD
Bueno, no sé si me hice entender jaja, acá esta el code:
Código
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Hace un pause de N milisegundos
Private Sub CmdDibujarLinea_Click()
Me.ScaleMode = vbPixels
Me.Line (10, 10)-(100, 100), vbBlue
For i = 100 To 10 Step -1
   Sleep 10
   DoEvents
   Me.Cls 'Sirve para borrar lo que se haya impreso en el formulario :)
   Me.Line (10, i - 90)-(100, i), vbBlue
Next i
Me.Line (10, 100)-(10, 10), vbBlack
End Sub
 
Yo ya tengo sueño :P, seguramente para mañana te contestan bien, Saludos!

Editado: Como ando aprendiendo a tildar, entonces corregí. xD
73  Programación / Programación VB / Re: Dibujar Linea en: 30 Octubre 2007, 04:04
Cuadra las coordenadas:
Código
    Me.Cls
   Me.Line (10, i - 90)-(100, i), vbBlue
 
El Cls solo sirve para limpiar el form, quitalo... ¿Que pasará? :P.
y si no queres que se te borren esas dos últimas lineas pués no pongas el Me.cls (Respuesta a la pregunta anterior)
Bueno, jaja estoy algo confuso. no sé que queres decir con eso de las dos últimas lineas.

Saludos!
74  Programación / Programación VB / Re: Dibujar Linea en: 30 Octubre 2007, 03:42
Mira, si esto es lo que andas buscando:
Código
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Hace un pause de N milisegundos
Private Sub CmdDibujarLinea_Click()
Me.ScaleMode = vbPixels
Me.Line (10, 10)-(100, 100), vbBlue
For i = 100 To 10 Step -1
   Sleep 100
   DoEvents
   Me.Cls 'Sirve para borrar lo que se haya impreso en el formulario :)
   Me.Line (10, 10)-(100, i), vbBlue
Next i
End Sub
 

Bueno, saludos :)

Editado: Y bueno, ya que ando de buen humor, jaja mirate este código, genera un muy bonito efecto:
Código
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim Parar As Boolean
 
Private Sub CmdDibujarLinea_Click()
Me.ScaleMode = vbPixels
Parar = False
DeNuevo:
Me.Line (10, 10)-(100, 100), vbBlue
For i = 100 To 10 Step -1
   Sleep 5
   DoEvents
   Me.Cls
   Me.Line (10, 10)-(100, i), vbBlue
Next i
For i = 10 To 100
   Sleep 2
   DoEvents
   Me.Cls
   Me.Line (10, 10)-(100, i), vbBlue
Next i
If Parar = False Then
   GoTo DeNuevo
End If
End Sub
 
Private Sub CmdParar_Click()
Parar = True
End Sub
 
jaja saludos !
75  Programación / Programación VB / Re: chequear si existe la base de datos? en: 29 Octubre 2007, 04:33
Bueno :P, mira, agrega como referencia "Microsoft DAO 3.51 Object Library", o la versión que tengas de esa misma librería.
Luego antes de donde te sale el error:
Código
Set db = DBEngine.crearbase(App.Path & "/" & "nueva" & ".mdb", dbLangGeneral)
 
agregas este código:
Código
Dim db as DAO.DataBase
 

Y corregis esto en tú código:
Código
Set db = DBEngine.crearbase(App.Path & "/" & "nueva" & ".mdb", dbLangGeneral)
 
'por
 
Set db = DBEngine.CreateDatabase(App.Path & "/" & "nueva" & ".mdb", dbLangGeneral)
 

Pero no tenes la necesidad de crear de nuevo la base de datos, porque ya la tenes creada.
Saludos :) y bueno espero que te sirva.
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19






Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC