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ú

Temas - Olger346

#1
Buenas, ¿qué tal comunidad?

Tengo una duda, ya que estoy analizando un programa de Python y me he perdido en la secuencia en la ejecución del mismo por la gran cantidad de archivos que tiene y la gran cantidad de código.

Hay alguna forma de interpretarlo paso a paso? como en algún debugger. Nótese que no es un exe.

Gracias por leer.
#2
Hacking / HTML Injection (post para novatos)
Diciembre 25, 2017, 10:05:50 AM
Felíz Navidad a todos...

Hoy vengo a postear sobre lo que dice el título. Bien tal vez será que no lo veamos mucho en las webs de internet. Pero sigue siendo una de las vulnerabilidades que lleva mucho años en el top 10 de OWASP, y se da en parte porque obviamos algunas cosas o porque pensamos que nadie vendrá a atacarnos porque no tenemos nada importante. Sin embargo, no está dentro de las mejores prácticas en la gobernanza de activos de TI.

Qué es html injection (OWASP)
CitarHTML injection is a type of injection issue that occurs when a user is able to control an input point and is able to inject arbitrary HTML code into a vulnerable web page. This vulnerability can have many consequences, like disclosure of a user's session cookies that could be used to impersonate the victim, or, more generally, it can allow the attacker to modify the page content seen by the victims.

Bien según owasp tenemos multiples variantes a insertar en una web vulnerable. Para efecto de prueba y ética usare bWAPP.
Ejemplo 1: Nivel bajo (validación de entrada de datos nula)


En este caso la validación de la entrada de los caracteres es nula y por ello se ve reflejada en la salida del navegador y por ello, los caracteres "<" ">" son tratados como una cosa normal ante el sitio y el navegador.


Hemos intentado insertando un script para mandar una alerta al usuario (esto sólo pasa si enviamos la url maliciosa a un usuario específico).

Ejemplo 2: Nivel medio (aquí es donde viene lo bueno del asunto). Cuando el programador cree que es más listo que el atacante.

Para explicar exactamente qué es lo que sucede, es que el programador ha decidido anular los caracteres "<" ">" que son indispensables para la inyección de código de html y javascript. Sin embargo sabemos que nuestra aplicación utiliza PHP como su lenguaje de backend y esta siendo procesado por el servidor. Si nos fijamos en la URL del navegador tenemos múltiples caracteres que aparecen dentro de ellos "%" y otros caracteres que son interpretados por PHP y que darán respuesta al navegador. Muy característicos de CMS como Joomla y Drupal que funcional bajo php

¿Entonces qué podemos hacer? Utilizaremos esta información que nos brinda la URL, bajo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta esta tabla podemos convertir cualquier caracter normal a uno que interprete el servidor.

Código: php
%3Cinput type="text" name="usuario"%3E
%3Cinput type="password" name="passwd"

Con esto bypaseamos las buenas intenciones del programador.

Bien, esta entrada de datos la podemos enviar a otro servidor y recojerlas y habremos obtenido un usuario y password que seguramente algún flojo no cambió en sus redes sociales. Claro que debe ser un poquito más de codificación en HTML

Ejemplo 3: Nivel Difícil
En este nivel vemos la mejor manera de evitar que un atacante intente insertar código en nuestra web.

Esta vez vemos que no podemos usar ninguna de las formas que intentamos anteriormente. Esto se debe a que el programador utilizó una función de PHP que nos ha mandado a "tomar por saco".

Sin embargo aquí no se queda todo, la función utilizada por el programador fue htmlentities(). Por sí sola esta función no para que los atacantes inserten código en el navegador.
Código: php
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Acompañada de la codificación que acepte el navegador esta función puede o no ser útil. En este caso el programador decidió que UTF-8 sería la entrada aceptada, de manera que no podemos bypasear la función utilizando UTF-7 u otro.

Si el programador hubiese puesto un documento normal de HTML probablemente seguiría siendo vulnerable el sitio.
por ejemplo:
Código: php
<html>  
<body>
<input type="text" name="username" action="">
<input type="password" name="passwd">
<button type="submit" name="boton" value="Log in">
</body></html>

El código sería vulnerable porque no se ha especificado el valor de la codificación en el tag <meta> en la página.

Referencias
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Espero que les haya servido. :)

#3
Buenas a todos. Hace muuuucho tiempo que no posteo nada.
Hoy decidí practicar nuevamente con la aplicación bwapp de owasp. En el nivel intermedio tenemos algo curioso en la aplicación y es que ahora acepta caracteres especiales que dificultan la ejecición de codigo en funciones como exec, shell_exec, que en el nivel simple se dan muy bien...


Mi duda... ¿Cómo puedo bypasear esta sentencia de código?
Código: php
<?php

if(isset($_REQUEST["message"]))
{

    // If the security level is not MEDIUM or HIGH
    if($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2")
    {

?>
    <p><i><?php @eval ("echo " . $_REQUEST["message"] . ";");?></i></p>

<?php

    }

    // If the security level is MEDIUM or HIGH
    else
    {
?>
    <p><i><?php echo htmlspecialchars($_REQUEST["message"], ENT_QUOTES, "UTF-8");;?></i></p>

<?php

    }

}

?>


Estuve sviendo algunos videos acerca de esta función y por lo que he comprendido anula las comillas simples y dobles, sin embargo el ampersant && la app cambia su comportamiento, todo lo que va despues del & queda ignorado a la vista del navegador.
#4
Hola muchachos tengo una pequeña duda acerca de este fragmento de código que he programado en un juego que se llama Checkio.

El enunciado es el siguiente
Citar"Fizz buzz" es un juego con palabras que usaremos para enseñarles a los robots acerca de la división. Aprendamos de computadoras.
Tú deberías escribir una función que recibirá un entero positivo y devolver: "Fizz Buzz" si el número es divisible por 3 y por 5;
"Fizz" si el número es divisible por 3;
"Buzz" si el número es divisible por 5;
El número como una cadena para los otros casos.
Entrada: Un número como un entero.
Salida: La respuesta como una cadena de caracteres.
Precondición: 0 < número ≤ 1000

Entonces en el intérprete pongo el siguiente fragmento de código
Código: python

def checkio(number):
   if(0< number and number<100):
       if(number%3=0):
           print "Fizz Buzz"
       else:
           print "No es divisible por 3"
       if(number%5=0)
            print"Buzz"
    return str(number)

number = input("Introduzca un entero")
checkio(number)
print "el numero es divisible entre alguno de los dos" + number

Me esta marcando error en las líneas 3 y 7 y la verdad no comprendo el por qué. O si estoy obviando algo por favor díganmelo tiendo a confundir estas sentencias con las de C. Les agradezco por la ayuda que me puedan brindar
#5
El objetivo de este programa es notar la variación de las banderas después de ejecutar una operación aritmetica, en este caso suma y resta.
Espero haber documentado bien el código para que todo haya quedado claro, también quiero decir que la rutina de scanum la saque de un sitio brujo, pero podeís observar que hace emulando paso por paso.

Las variables se almacenan en el registro cx, el cual hay que moverselo a una variable, de lo contrario se pierde el valor de la variable.
El programa solo corre en un rango de -128 a 127.
Hay algunas banderas que probablemente no cambiaran.

Espero que sea de utilidad. ^w^b
Código: asm

imprime_car macro   car
   
    mov    ah,10
    mov    al,car
    mov    bh,0
    mov    cx,1
    int    10h     

endm

print  macro cad
    mov   ah,9
    lea   dx,cad
    int   21h
   
endm   

getch macro dato
   
    mov  ah,0   ; servicio 0 de Teclado
    int  16h    ; Interrupcion de teclado
   
    mov  dato,al
   
endm

cursor_xy  macro X,Y
   
    mov    ah,2     ; servicio 2 de video
    mov    dh,Y     ; coordenada de la fila
    mov    dl,X     ; coordenada de la columna
    mov    bh,0     
    int    10h      ; interrupcion de video
   
endm

putc macro   car
   
    mov    ah,10
    mov    al,car
    mov    bh,0
    mov    cx,1
    int    10h
endm 

getint macro dato       ;modificaciones de la macro getch
   
    mov  ah,0   ; servicio 0 de Teclado
    int  16h    ; Interrupcion de teclado
   
    mov  dato,ax ;cambiar a ax para recojer datos de 2bytes osea mayores a 127
   
endm

.data
  error db "error",13,10,36
  h1 db "                                                      ",13,10,
     db "                  Registro de Estado          Olger346",13,10,
     db "              Operaciones con Negativos               ",13,10,
     db "                      + Suma                    11R122",13,10,
     db "                      - Resta                         ",13,10,
     db "                      ESC                             ",13,10,36
         
  h2 db "                 Valor de A (127-128)                 ",13,10,36
  h3 db "                 Valor de B (127-128)                 ",13,10,36
     
  h4 db "       - - - - O D I T S Z - A - P - C                ",13,10,
     db "                                                      ",13,10,
     db "                                                      ",13,10,
     db " Aritmeticos & Logicos   Control                      ",13,10,
     db " Acarreo         =       Direccion    =                    ",13,10,
     db " Paridad         =       Interrupcion =           Valor    ",13,10,
     db " Auxiliar        =       Trazado      =           A=       ",13,10,
     db " Cero            =                                B=       ",13,10,
     db " Signo           =                         resultado       ",13,10,
     db " Desbordamiento  =                                         ",13,10,36
                                                                     
   B db "  ",36 ;variable xa impresion hexadecimal y otras
   A dw ?       ;1er valor a introducir
   C dw ?       ;segundo valor a introducir
   G db ?   
   M dw ?       ;resultado de suma o resta
   I dw ?       ;recoje un caracter ya sea +-
   X db 40  ;variable de barrido de impresion
                                                    make_minus db ?
ten dw 10
msg db    0,25,36
K   db 16
bla db "   ",36
             ;variables de control de ciclo
U   db 40
V   db 40
W   db 37
flag dw ?      ;variable para almacenar el registro de estado
ntr db "0",36 
control db 40   
ecchi db 40

   
.stack
   
.code
       
    mov ax,@data
    mov ds,ax 
       
    cursor_xy 0,1     
    print h1       
    cursor_xy 26,6  ;coloca cursor en el primer ingreso del signo aritmetico
   
   
ciclo:   
   
    mov I,0
    cursor_xy 26,6
    print bla
    cursor_xy 26,6
    getint  I
    mov ax,I
    mov B,al ;se imprime 
    print B   
   
    cmp I,4E2Bh    ;podeis cambiar esto a 1 y funcionara con el 1 del teclado
    je  suma
   
    cmp I, 4A2Dh   ;igual podeis cambiar a 2
    je  resta
   
    cmp I,01
    je  final
   
    print error
    jmp ciclo
   
    ;call SCAN_NUM   ;scanea el signo aritmetico     
    ;mov     G,cx       
   
   
suma:
     
    mov cx,0        ; en cx queda un valor hay que resetearlo para que no haya basura en el valor que se vuelve a introducir nuevamente
    mov A,0         ;limpiamos el valor que tenia la variable A
    cursor_xy 0,7 
    print h2
    cursor_xy 38,7  ;coloca cursor en el primer ingreso del primer valor
    call SCAN_NUM   ;scanea el primer valor
    mov     A,cx   
   
    cmp   A,128
    je    suma
   
    cmp   A,-129
    je    suma
   
    mov cx,0
    mov C,0
    cursor_xy 0,8
    print h3
    cursor_xy 38,8  ;coloca cursor en el primer ingreso del segund valor
    call SCAN_NUM   ;scanea el segundo valor
    mov     C,cx     
   
    cmp   C,128
    je   suma
   
    cmp   C,-128
    je    suma
   
    mov  ax,A ; mov para sumar
    add  ax,C ; anade a ax lo q tiene c
    mov  M,ax ; mov la suma a la variable M
   
    mov ax,M
    xchg al,ah
    push ax
    call HEXA
       
    cursor_xy 60,22   
    print B   ;imprime la parte high de ax osea M
   
    mov  ax,M
    push ax
    call HEXA
   
   
    cursor_xy 62,22
    print B ;imprime 1byte de la parte low de ax osea M
   
    cursor_xy 0,14
    print h4 ;imprime esquema de flag
   
   
    mov  ax,A ; mov para sumar
    add  ax,C ; anade a ax lo q tiene c
       
    pushf    ; ax=Flag
    pop ax ;pop F para almacenar las flags
   
    cursor_xy 0,16  ;impresion de flags
    mov flag,ax
                             
    jmp binario4
       
   
   
   
resta:   
   
    mov cx,0        ; en cx queda un valor hay que resetearlo para que no haya basura en el valor que se vuelve a introducir nuevamente
    mov A,0         ; limpiamos el valor que habia en A
    cursor_xy 0,7 
    print h2
    cursor_xy 38,7  ;coloca cursor en el primer ingreso del primer valor
    call SCAN_NUM   ;scanea el primer valor
    mov     A,cx 
   
    cmp   A,128
    je   resta
   
    cmp   A,-129
    je    resta
   
    mov cx,0        ; en cx queda un valor hay que resetearlo para que no haya basura en el valor que se vuelve a introducir nuevamente
    mov C,0         ;limpiamos el valor que queda en C
    cursor_xy 0,8
    print h3
    cursor_xy 38,8  ;coloca cursor en el primer ingreso del segund valor
    call SCAN_NUM   ;scanea el segundo valor
    mov     C,cx
   
    cmp   C,128
    je   resta
   
    cmp   C,-129
    je    resta 
   
   
    mov  ax,A       ; mov para sumar
    sub  ax,C       ; anade a ax lo q tiene c
    mov  M,ax       ; mov la suma a la variable M
   
    mov ax,M
    xchg al,ah
    push ax
    call HEXA
    cursor_xy 60,22
    print B         ;imprime la parte high de ax osea M
   
    mov ax,M
    push ax
    call HEXA
    cursor_xy 62,22
    print B         ;imprime 1byte de la parte low de ax osea M
   
   
   
    cursor_xy 0,14
    print h4        ;imprime esquema de flag
   
    mov  ax,A ; mov para sumar
    sub  ax,C ; anade a ax lo q tiene c
       
    pushf    ; ax=Flag
    pop ax ;pop F para almacenar las flags
   
    cursor_xy 0,16  ;impresion de flags
    mov flag,ax
                                       
    jmp binario4
       
   

binario1:
       
        mov   ax,A   
                            ;mov   bx,ax
        and   ax,1          ;cambias esto            ; Residuo de dividir entre 2   
       
       
        cursor_xy U,9
        add   al,48     ;suma para que aparezca el caracter en pantalla ascii
        putc  al
       
        sub   U,2       ; y esto para convertir a octal y ya
        shr   A,1
        dec   K                ;sub K,1
         
        cmp U,28        ;barrido para impresion de pantalla
        jae binario1
        add U,14
       
        jmp binario2
       
binario2:

        mov   ax,C   
                            ;mov   bx,ax
        and   ax,1          ;cambias esto            ; Residuo de dividir entre 2   
       
       
        cursor_xy V,10
        add   al,48    ;suma para que aparezca el caracter en pantalla ascii
        putc  al
       
        sub   V,2  ; y esto para convertir a octal y ya
        shr   C,1
        dec   K                ;sub K,1
         
        cmp V,28      ;barrido para impresion de pantalla
        jae binario2
        add V,14
        jmp binario3   
       
binario3:

         
        mov   ax,M   
                                  ;mov   bx,ax
        and   ax,1          ;cambias esto            ; Residuo de dividir entre 2   
       
       
        cursor_xy X,11
        add   al,48    ;suma para que aparezca el caracter en pantalla ascii
        putc  al
       
        sub   X,2  ; y esto para convertir a octal y ya
        shr   M,1
        dec   K                ;sub K,1
         
        cmp X,28      ;barrido para impresion de pantalla
        jae binario3
        add X,14 
        jmp ciclo

binario4:

         
        mov   ax,flag   
                                  ;mov   bx,ax
        and   ax,1          ;cambias esto            ; Residuo de dividir entre 2   
       
       
        cursor_xy W,16
        add   al,48    ;suma para que aparezca el caracter en pantalla ascii
        putc  al
       
        sub   W,2  ; y esto para convertir a octal y ya
        sub   control,2
        shr   flag,1
                       ;sub K,1
       
        cmp   ecchi,40
        je    acarreo
        cmp   control,34
        je    par
        cmp   control,30
        je    aux
        cmp   control,26
        je    zero
        cmp   control,24
        je    sig
        cmp   control,20
        je    inter
       
       
         
        cmp W,18      ;barrido para impresion de pantalla
        jae binario4
        add W,20
        add control,20
        jmp binario1
       
       
par:
        cursor_xy     20,19
        putc al
        jmp binario4 

zero:
        cursor_xy     20,21
        putc al
        jmp binario4
sig:
        cursor_xy     20,22
        putc al
        cursor_xy     20,23
        print ntr
        jmp binario4
inter: 
        cursor_xy     40,19
        putc al
        cursor_xy     40,18
        print ntr
        cursor_xy     40,20
        print ntr
        jmp binario4

acarreo:
       
        cursor_xy     20,18
        putc al
        sub ecchi,2
        jmp binario4
aux:
        cursor_xy     20,20
        putc al
        jmp binario4       
       
                         
final:
    mov ah,21h
    int 21h
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
       
     
;/////////RUTINA SCAN_NUM
   
; -32768 : 65535
; gets the multi-digit SIGNED number from the keyboard,
; and stores the result in CX register:
SCAN_NUM        PROC    NEAR
        PUSH    DX
        PUSH    AX
        PUSH    SI
       
        MOV     CX, 0

        ; reset flag:
        MOV     make_minus, 0

next_digit:

        ; get char from keyboard
        ; into AL:
        MOV     AH, 00h
        INT     16h
        ; and print it:
        MOV     AH, 0Eh
        INT     10h

        ; check for MINUS:
        CMP     AL, '-'
        JE      set_minus

        ; check for ENTER key:
        CMP     AL, 0Dh  ; carriage return?
        JNE     not_cr
        JMP     stop_input
not_cr:


        CMP     AL, 8                   ; 'BACKSPACE' pressed?
        JNE     backspace_checked
        MOV     DX, 0                   ; remove last digit by
        MOV     AX, CX                  ; division:
        DIV     ten                  ; AX = DX:AX / 10 (DX-rem).
        MOV     CX, AX
        PUTC    ' '                     ; clear position.
        PUTC    8                       ; backspace again.
        JMP     next_digit
backspace_checked:


        ; allow only digits:
        CMP     AL, '0'
        JAE     ok_AE_0
        JMP     remove_not_digit
ok_AE_0:       
        CMP     AL, '9'
        JBE     ok_digit
remove_not_digit:       
        PUTC    8       ; backspace.
        PUTC    ' '     ; clear last entered not digit.
        PUTC    8       ; backspace again.       
        JMP     next_digit ; wait for next input.       
ok_digit:


        ; multiply CX by 10 (first time the result is zero)
        PUSH    AX
        MOV     AX, CX
        MUL     ten                  ; DX:AX = AX*10
        MOV     CX, AX
        POP     AX

        ; check if the number is too big
        ; (result should be 16 bits)
        CMP     DX, 0
        JNE     too_big

        ; convert from ASCII code:
        SUB     AL, 30h

        ; add AL to CX:
        MOV     AH, 0
        MOV     DX, CX      ; backup, in case the result will be too big.
        ADD     CX, AX
        JC      too_big2    ; jump if the number is too big.

        JMP     next_digit

set_minus:
        MOV     make_minus, 1
        JMP     next_digit

too_big2:
        MOV     CX, DX      ; restore the backuped value before add.
        MOV     DX, 0       ; DX was zero before backup!
too_big:
        MOV     AX, CX
        DIV     ten  ; reverse last DX:AX = AX*10, make AX = DX:AX / 10
        MOV     CX, AX
        PUTC    8       ; backspace.
        PUTC    ' '     ; clear last entered digit.
        PUTC    8       ; backspace again.       
        JMP     next_digit ; wait for Enter/Backspace.
       
       
stop_input:
        ; check flag:
        CMP     make_minus, 0
        JE      not_minus
        NEG     CX
not_minus:

        POP     SI
        POP     AX
        POP     DX
        RET

SCAN_NUM        ENDP

;//////// RUTINA HEXADECIMAL
 
Hexa        proc    near
            push    bp
            mov     bp,sp
            mov     al,[bp+4]
            shr     al,4
            add     al,48
            cmp     al,58
            js      nible2
            add     al,7
nible2:     mov     B,al
            mov     al,[bp+4]
            shl     al,4
            shr     al,4
            add     al,48
            cmp     al,58
            js      nible1
            add     al,7
nible1:     mov     B[1],al
            pop     bp
            ret
Hexa        endp

;////////////FIN DEL PROGRAMA



.exit
#6
C / C++ / Estructura de Datos [Cola Circular][C]
Junio 26, 2015, 12:23:05 PM
Este es el primer tema que aporto a la comunidad. Espero que ayude a más de uno que se esta aventurando en estos temas. El programa tiene un pequeño error en la eliminación de los datos (cola circular) que no he podido arreglar, pero servirá como algoritmo base para cualquier pionero o perdido del tema.
Código: c

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
/*PROYECTO#2
Grupo:11R-122 Universidad Tecnológica de Panamá
//Importante-----------------La cola funciona, hay que eliminar dos elementos y luego introducir, es un error que no hemos podido arreglar, pero por todo lo demas funciona bien
*/
// COLA
main(){

int cola[6]={NULL}, fr,fn, max, dato, opcion,x,eliminar,i,num,k;
int *frente,*puntero;
max=6;
//cola[0]=0;
fr=0;
fn=0;
i=0;

do{

system("color 1f");

system("cls");

printf("\n\t OPERACIONES QUE SE PUEDEN HACER EN UNA COLA \n\n\n");
printf("\n\t 1. Ingresar valores en la cola \n");
printf("\n\t 2. Mostrar datos que contiene la cola \n");
printf("\n\t 3. Eliminar valores de la cola \n");
printf("\n\t 4. Salir del programa \n");

scanf("%d",&opcion);

switch(opcion){
/*---------------------------------------------------*/
/*---------------------------------------------------*/
/* INSERTAR VALORES EN LA COLA */
case 1:{
system("cls");
    printf("\n\t Introduzca la cantidad de elementos de la Cola, max 5: ");
scanf("%d",&num);
// max=max+1; //quitar si se estropea
printf("\n\t La posicion %d esta reservada en la cola circular como frente \n",fr);


if(fr!=(fn+1)%max){


    //fn=(fn+1)%max;
    for(i=0; i<=num; i++){

    printf("\n\t %d final esta ",fn);
    if(fn==fr)
    {
      i=i+1;
    }
    fn=fn+1;

printf("\n\t Introduzca el dato %d de la cola:\n",fn);
scanf("%d",&dato);
cola[fn]=dato;


printf("\n fn =%d ",fn);
printf("\n fr =%d", fr);

     }
    }

    else
    printf("La cola esta llena");
    printf("\n final es %d ",fn);
     if(fn==max)
     {
         fn=0;
     }

}
getch();
break;


/*---------------------------------------------------*/
/*---------------------------------------------------*/
/* MOSTRAR VALORES DE LA COLA */
case 2:{

system("cls");

if(fr==fn)
{
printf("\n\t La cola esta vacia");
}
    else
{
printf("\n Datos de la cola: \n"); i=i+20;
    for(i=1; i<max; i++)
{

    printf("%d \n",cola[i]); //cambiar a fn si se estropea el programa
     }
}
    printf("\n Final=%d ",fn);
    printf("\n Frente=%d ",fr);
}
getch();
break;
/*---------------------------------------------------*/
/*---------------------------------------------------*/
/* ELIMINAR VALORES EN LA COLA */
case 3:{

system("cls");

if(fn==fr)
{
printf("\n\t Cola vacia");
}
else
{
    printf("\n\t Cuantos elementos desea eliminar: ");
    scanf("%d",&eliminar);
//fr=(fr(fr+1)%max);
for(x=0; x<eliminar; x++)
{
    frente=&cola[0];
    //cambiar a menos si se estropea el programa
frente[fr]=NULL; //quitar esto si se estropea el programa
fr++;
    frente[fr]=NULL;
frente=&cola[fr];
printf("\n\t El elemento de la posicion %d fue eliminado",fr);
/* if(fr>fr-1)
     {
         i=i-fn;
      //   fn=fn-1;
      //   puntero=&num;
       //  puntero=NULL;

    }*/


     }
getch();
}
}

break;

/*---------------------------------------------------*/
/*---------------------------------------------------*/
/* SALIR DEL PROGRAMA*/
case 4:{

printf("\n Saliendo del programa ");
return 0;
}
break;
}
}while(opcion<5);
}



#7
Presentaciones y cumpleaños / Yoharo ^^
Abril 25, 2015, 10:58:39 PM
Hola bueno, soy nuevo, me intereso el tema del hacking desde hace mucho tiempo. Estudio redes informaticas en mi universidad, tengo como hobbies ver anime, estudiar japonés y trastear el pc, casi siempre estoy haciendole alguna trastada y termino perdido xD bueno soy nuevo en este tema y quiero aprender mucho de ustedes, es la razón por la que me he registrado y me he unido, de todos los foros que habian me registré aqui porque vi la cantidad de temas y me parecio razonable. Tambien porque me estoy descargando el kali para empezar a aprender ^^ por ahora me sentaré a leer y de vez en cuando pedir ayuda xD y algun dia poder postear algo util. Saludos
Perdonen a los moderadores de la zona ya que desconozco el foro y no se si esta en la sección correcta