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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17
41  Programación / ASM / Shellcode to HEX (BOF) en: 26 Enero 2017, 23:48 pm
Hola a todos, estoy explotando un bof necesito una ayuda.

Necesito pasar esta serie de instrucciones a hexa para luego ejecutarlo con C.

Código
  1. .section .data
  2. __archivo:
  3. .asciz "/home/httpd/test"  # Archivo a eliminar.
  4.  
  5. .section .text
  6. .global main
  7. main:
  8.        movl $10, %eax    
  9.        movl $__archivo, %ebx    
  10.        int  $0x80
  11.  
  12.        movl %eax, %ebx  
  13.        movl $1, %eax      
  14.        int  $0x80

Quiero pasar este código asm que borra un archivo a C tipo:

Código
  1. char sc[] =  "\xb8\x0a\x00\x00\x00\xbb\x8c\x90\x04\x08\xcd\x80\x89\xc3\xb8\x01\x00\x00\x00\xcd\x80";
  2.  
  3. int main (void){
  4.  
  5.        int (*func)();
  6.        func = (int (*)())sc;
  7.        (int)(*func)();
  8. }


Pero me parece que estoy pasando mal el asm al hexadecimal, ¿cómo puedo pasarlo para ejecutarlo desde C?

Probé hacerlo con objdump pero no funciona.

Saludos.
42  Foros Generales / Foro Libre / Re: Enseña tu teclado. en: 9 Enero 2017, 13:53 pm
Yo tengo un Genius k639, de los planos.


Me encanta, uno de los teclados más cómodos que probé.
No sé que onda los teclados mecánicos me gustaría algún día probar alguno, ¿te acordás de mi Songoku? vos me ayudaste a resolver un problema que tenía con la placa Ethernet, me hiciste comprar un USB Ethernet y desde ahí mi vida cambio para siempre(?, no mentira solo tengo internet ahora.

Saludos.
43  Programación / Programación General / Re: Analizador en mi web en: 9 Enero 2017, 13:48 pm
Todas las peticiones que se hacen a tu página web estan guardadas en los logs, así que puedes crear un script que busque directamente de ahí con expresiones regulares.

No sé que servidor usas pero buscalo en Google, seguro vas a encontrar mucha información, sino pregunta.

Saludos.
44  Programación / ASM / Re: ¿Funciones anidadas? en: 25 Noviembre 2016, 03:45 am
No, ya lo había leído por arriba.
45  Programación / ASM / Re: ¿Funciones anidadas? en: 25 Noviembre 2016, 00:07 am
No, las diferentes formas de implementar funciones anidadas en ASM y la lógica de cada una de las implementaciones.
Si quisiera el código simplemente haría gcc -S ff.c, pero no es la única forma que hay de escribir funciones anidadas.
46  Programación / ASM / ¿Funciones anidadas? en: 21 Noviembre 2016, 18:05 pm
Hola!, estuve buscando por internet pero todavía no me queda del todo claro, alguien sabe algo sobre funciones anidadas?


Algo como esto estoy buscando

Código
  1. void f( int a){
  2.  
  3.       int gg(char v){
  4.             return 1;
  5.      }
  6.       gg('b');
  7.  
  8. }
  9.  

Sí se que se lo puede pasar a ASM con gcc -S, de todos modos no entiendo los procedimientos que hace.


Saludos!
47  Programación / Programación C/C++ / [C-ASM] Pila en: 21 Noviembre 2016, 01:58 am
¿Podrían explicarme un poco mejor como es que funciona stack y hacer_stack?
Código
  1. #include <stdlib.h>
  2. #include <setjmp.h>
  3.  
  4. #define TPILA 4096
  5. #define NPILAS 10
  6.  
  7. static void hace_stack(jmp_buf buf, void (*pf)(), unsigned prof, char *dummy) {
  8.  
  9.        printf ("prof: %d\n",prof);
  10.        printf ("dummy: %d\n",dummy-(char*) &prof );
  11.  
  12.  
  13.        if( dummy - (char *) &prof >= prof) {
  14.                if (setjmp(buf)!=0) {
  15.                        pf(); abort();
  16.                }
  17.        } else hace_stack(buf, pf, prof, dummy);
  18. }
  19.  
  20. void stack(jmp_buf buf, void (*pf)()) {
  21.        static int ctas = NPILAS;
  22.        char dummy;
  23.        hace_stack(buf, pf, TPILA*ctas, &dummy);
  24.        ctas--;
  25. }
  26.  

Código
  1. #include <stdio.h>
  2. #include "guindows.h"
  3.  
  4. task t1, t2, taskmain;
  5.  
  6. void ft1(){
  7. double d;
  8. for(d=-1;;d+=0.001) {
  9. printf("d=%f\n", d);
  10. TRANSFER(t1,t2);
  11. }
  12. }
  13.  
  14. void ft2(){
  15. int i;
  16. for(i=0;i<10000;i++) {
  17. printf("i=%d\n", i);
  18. TRANSFER(t2,t1);
  19. }
  20. TRANSFER(t2, taskmain);
  21. }
  22.  
  23. main(){
  24. stack(t1,ft1);
  25. stack(t2,ft2);
  26. TRANSFER(taskmain,t1);
  27. return 0;
  28. }
  29.  


¿Para qué carajos sirve esto?
Código
  1.        if( dummy - (char *) &prof >= prof) {
  2.                if (setjmp(buf)!=0) {
  3.                        pf(); abort();
  4.                }
  5.        } else hace_stack(buf, pf, prof, dummy);

Me parece una forma muy rara de codear (char *)&prof sé lo que significa pero no entiendo para que sirve.

Todo lo de guindows.h lo entiendo.
48  Programación / Programación C/C++ / Re: Morse - ¿donde está mal? en: 7 Noviembre 2016, 08:31 am
¿Esto es lo que estás buscando?
Fijate, ahí hice algunos arreglos, y funciona.

Gets se dejó de usar hace tiempo, mejor usa scanf.
EDITO: scanf lee la entrada hasta el primer espacio, entonces no deberías usar scanf tampoco. Creo que fgets o alguna función de esas, eso te dejo que lo investigues vos.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void cifrarmorse (char frase){
  6.  
  7.    switch (frase){
  8.        case 'a':
  9.        case 'A': printf("·- ");
  10.            break;
  11.        case 'b':
  12.        case 'B': printf("-··· ");
  13.            break;
  14.        case 'c':
  15.        case 'C': printf("-·-·" );
  16.            break;
  17.        case 'd':
  18.        case 'D': printf("-·· ");
  19.            break;
  20.        case 'e':
  21.        case 'E': printf("· ");
  22.            break;
  23.        case 'f':
  24.        case 'F': printf("··-· ");
  25.            break;
  26.        case 'g':
  27.        case 'G': printf("--· ");
  28.            break;
  29.        case 'h':
  30.        case 'H': printf("···· ");
  31.            break;
  32.        case 'i':
  33.        case 'I': printf("·· ");
  34.            break;
  35.        case 'j':
  36.        case 'J': printf("·--- ");
  37.            break;
  38.        case 'k':
  39.        case 'K': printf("-·- ");
  40.            break;
  41.        case 'l':
  42.        case 'L': printf("·-·· ");
  43.            break;
  44.        case 'm':
  45.        case 'M': printf("-- ");
  46.            break;
  47.        case 'n':
  48.        case 'N': printf("-· ");
  49.            break;
  50.        case 'o':
  51.        case 'O': printf("--- ");
  52.            break;
  53.        case 'p':
  54.        case 'P': printf("·--· ");
  55.            break;
  56.        case 'q':
  57.        case 'Q': printf("--·- ");
  58.            break;
  59.        case 'r':
  60.        case 'R': printf("·-· ");
  61.            break;
  62.        case 's':
  63.        case 'S': printf("··· ");
  64.            break;
  65.        case 't':
  66.        case 'T': printf("- ");
  67.            break;
  68.        case 'u':
  69.        case 'U': printf("··- ");
  70.            break;
  71.        case 'v':
  72.        case 'V': printf("···- ");
  73.            break;
  74.        case 'w':
  75.        case 'W': printf("·-- ");
  76.            break;
  77.        case 'x':
  78.        case 'X': printf("-··- ");
  79.            break;
  80.        case 'y':
  81.        case 'Y': printf("-·-- ");
  82.            break;
  83.        case 'z':
  84.        case 'Z': printf("--·· ");
  85.            break;
  86.        case '0': printf("----- ");
  87.            break;
  88.        case '1': printf("·---- ");
  89.            break;
  90.        case '2': printf("··--- ");
  91.            break;
  92.        case '3': printf("···-- ");
  93.            break;
  94.        case '4': printf("····- ");
  95.            break;
  96.        case '5': printf("····· ");
  97.            break;
  98.        case '6': printf("-···· ");
  99.            break;
  100.        case '7': printf("--··· ");
  101.            break;
  102.        case '8': printf("---·· ");
  103.            break;
  104.        case '9': printf("----· ");
  105.            break;
  106.        case '.': printf("·-·-·- ");
  107.            break;
  108.        case ',': printf("--··-- ");
  109.            break;
  110.        case '?': printf("··--·· ");
  111.            break;
  112.        case '"': printf("·-··-· ");
  113.            break;
  114.        case ' ': printf("   ");
  115.            break;
  116.    }        
  117. }
  118.  
  119. int main(int argc, char** argv){
  120.    int a;
  121.    char frase[95];
  122.    printf("Introduzca una frase:\n");
  123.    scanf ("%s",frase);
  124.    a=strlen(frase);
  125.  
  126.    int i;
  127.  
  128.    for (i=0; i<a; i++)
  129.    cifrarmorse(frase[i]);
  130.  
  131.  
  132.    // Agregamos salto de linea al final.
  133.    printf ("\n");
  134.  
  135.    return 0;
  136. }

OUTPUT:
Código:
Introduzca una frase:
HOLA      
···· --- ·-·· ·-

Usá fgets te dejo como:    fgets (frase,sizeof(frase),stdin);
Deberías cambiarlo en el código que te pasé porque como te dije arriba scanf solo toma hasta el primer espacio.

Si pones "Hola" o "Hola Mundo" el programa con scanf solo toma Hola.


¡Saludos!
49  Programación / Programación C/C++ / Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA) en: 7 Noviembre 2016, 08:20 am
A eso era que me refería pero ya fue, a mi me lo dieron así.

Wikipedia es lo primero que leí antes de escribir este post.

Fue, ya está.
¡Saludos!
50  Programación / Programación C/C++ / Re: [Estrategias] Programación Dinámica vs Divide y conquistarás (DUDA) en: 6 Noviembre 2016, 14:04 pm
Si que los hay, y los encontré ya los voy entendiendo de todos modos ...

Top-Down y Botton-Up para calcular un número combinatorio.

Código
  1. int comb(int n, int k) {
  2.  static int table[MAXN][MAXK] = { 0 };
  3.  
  4.  if (k == 0 || n == k)
  5.    return 1;
  6.  
  7.  if (table[n][k] != 0)
  8.    return table[n][k];
  9.  
  10.  table[n][k] = comb(n - 1, k) + comb(n - 1, k - 1);
  11.  
  12.  return table[n][k];
  13. }
  14.  

Código
  1. int comb_(int n, int k) {
  2.  int table[n+1][k+1];
  3.  int i, j;
  4.  
  5.  for (i = 0; i <= n; i++)
  6.    table[i][0] = 1;
  7.  
  8.  for (i = 0; i <= n; i++)
  9.    table[i][i] = 1;
  10.  
  11.  for (i = 0; i <= n; i++)
  12.    for (j = 1; j <= k && j < i; j++){
  13. printf ("Valor de i: %d, valor de j: %d\n",i,j);
  14.      table[i][j] = table[i - 1][j - 1] + table[i - 1][j];
  15.  
  16. }
  17.  
  18.  return table[n][k];
  19. }
  20.  
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines