elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
26 Mayo 2012, 09:19  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Desafíos - Wargames (Moderador: Kasswed)
| | | |-+  Juez de Programacion - v1.0 [Beta]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Juez de Programacion - v1.0 [Beta]  (Leído 3,824 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Juez de Programacion - v1.0 [Beta]
« en: 5 Noviembre 2009, 01:11 »

Hola:

La idea inicio porque en ESTE POST se comento sobre un programa en linea (realizado en php, creo) llamado "Juez". La idea de esta pagina, es prinicpalmente una iniciativa (asi lo veo yo), para que puedas desarrollar tus conocimientos y habilidades en programacion, basandose en un programa en linea que te permite compilar, ejecutar y comprobar la funcionalidad de tu programa.

El Juez es una aplicacion que se basa en Retos, un reto seria un enunciado en donde se plantea que hagas X programa que permita capturar cierta informacio y genere un resultado, la idea es realizar el programa en C, subirlo al "Juez", y el mismo Juez realiza el proceso de compilacion, ejecucion y entrada de argumentos/comandos, con la finalidad de que los resultados arrojados por tu programa se comparan con los resultados que se supone debes obtener, si los resultados coinciden, pues superas el reto.

El unico Juez que me llamo la atencion, fue el de olimpiada-informatica.es, ya que te permite usar los retos siempre y cuando este registrado.

Objetivo

Realizar un programa Juez en linea disponible para quien desee pasar los retos, probar sus habilidades o bien intentar hackear al juez ;).... Claro, tambien que entre los interesados y participantes oficiales del proyecto, realizen la creacion y anidacion de nuevos retos.

Delimitaciones

El proceso de compilacion y ejecucion seria el unico inconveninete, ya que basandose en que el lenguaje PHP nos permite la utilizacion de funciones como exec() y system(), hacer el proceso completo, pero... estas funciones por lo general no estan disponibles en Servidores Gratuitos (hosting), solamente en Servidores Dedicados (de compra)... Bueno, eso es lo que yo creo !!...

CODIGO FUENTE

He codificado buen parte del programa Juez de Programacion (asi lo llame/bautice), mas abajo explico lo que he logrado que haga el codigo PHP y que seria lo que falta.

>> Descargar Juez de Programacion v1.0[Beta] <<

COMO COLABORO

Seria interesante que entre los interesados bajaran el codigo, lo montaran en su servidor casero, lo corrieran y proporcionaran sus aportes de codigo, ya sea en: mejoras, bugs, anidaciones, correcciones, etc... Utilizando ESTE MISMO POST, tomando en cuenta las siguienets delimitaciones cuando vayan a colocar un aporte de codigo:

1- Debes usar la etiqueta CODE para pegar codigo.
2- Todo codigo que aportes debes darlo bien informado y sin errores, vaya, debes probarlo y verificar que corra bien.
3- Proporciona toda la informacion en forma de //comentarios dentro del codigo, para que los coders no se pierdan y entiendan lo que haces.

Aqui les dejo un Ejemplo:

Código
<?php
# Coder: Nick_de_Autor <mail@mail.com>
# Date DIA/MES/año, HORA:MINUTO
# Fuente: ARCHIVO_PHP_QUE_MODIFIQUE.php
# Extras: Funciones que toque.. a(), b(), c(), d(), etc...
# Comentarios sobre la modificacion, aporte, correccion
#

inicio las modificaciones.....
..... y con comentarios y todo
?>

RE-COLABORACIONES

Esto se aplicaria solo y unicamente cuando un codigo que alguien proporciono, aun asi era ineficiente, o se podia mejorar aun mas, entonces en este caso seria una re-modificacion a una colaboracion ya colocada, se pide porfavor respeten los siguienets pasos para tocar una colaboracion ya puesta (re-modificarla).

1- Pulsa en CITAR sobre la modificacion/colaboracion que alguien ya aporto.
2- Debes usar la etiqueta CODE para pegar codigo.
3- Todo codigo que aportes debes darlo bien informado y sin errores, vaya, debes probarlo y verificar que corra bien.
4- Proporciona toda la informacion en forma de //comentarios dentro del codigo, para que los coders no se pierdan y entiendan lo que haces.
5- Muy importante.. Respeten la modificacion que hizo inicialmente el autor, ya que esto sera un proyecto que se retroalimentara constantemente y se debe tener un historial de autores para que no queden excluidos.

Aqui les dejo un Ejemplo:

Código
<?php
# Coder: Nick_de_Autor_Nuevo <mail@mail.com>
# Date DIA/MES/año, HORA:MINUTO
# Fuente: ARCHIVO_PHP_QUE_MODIFIQUE.php
# Extras: Funciones que toque.. a(), b(), c(), d(), etc...
# Comentarios sobre la modificacion, aporte, correccion
#

# Last-Coder: Nick_de_Autor_2 <mail@mail.com>
# Date DIA/MES/año, HORA:MINUTO
# Fuente: ARCHIVO_PHP_QUE_MODIFIQUE.php
# Extras: Funciones que toque.. a(), b(), c(), d(), etc...
# Comentarios sobre la modificacion, aporte, correccion
#

# Last-Coder: Nick_de_Autor_1 <mail@mail.com>
# Date DIA/MES/año, HORA:MINUTO
# Fuente: ARCHIVO_PHP_QUE_MODIFIQUE.php
# Extras: Funciones que toque.. a(), b(), c(), d(), etc...
# Comentarios sobre la modificacion, aporte, correccion
#

inicio las modificaciones.....
..... y con comentarios y todo
?>

QUEJAS Y SUGERENCIAS

Envien un Mensaje Privado o bien solo den una Respuesta a este hilo SIN CITAR.

NIVEL DE PARTICIPANTES

Pues solamente que deseen ayudar y brinden aportes, ya que no es un proyecto para ensenar a programar, sino a retroalimentar el codigo que he propuesto.

AVANCES DE JUEZ-1.0beta

Jues de Programacion tiene los siguentes avances:

  • Se proporciona archivo base.mysql para que se instale en su servidor casero.
  • el Menu Admin es facil y rapido de gestionar (aun muy ostero), basicamente poner tu username, tu password, nombre del reto, nivel de dificultad y contenido del reto.
  • El Menu Retos muestra en forma de lista los retos agregados por el Admin, si se pulsa encima de algn reto se despliega contenido nuevo.
  • Al acceder a un reto puedes ver el contenido del reto e intentar darle una solucion, vaya, subir el archivo.

Esto es lo que aun no hace el programa:

  • Aun no se agrega el codigo para compilar, solamente se puede subir un archivo, se revisa que sea formato *.c y quedo pendiente el procesod e compilacion, de echo aparece el mensaje de: "Compilando..." (para que se ubiquen en el code).
  • El Mini-foro tampoco ha quedado, la idea es que sea un foro simple y sencillo que sirva de ayuda, comentarios y aportaciones.
  • Bugs, pues aun no se encuentra ninguno, pues el code esta fresco
  • El formulario que se muestra n la parte de admin, no tiene implementado el chequeo de seguridad en los INPUT de nombre dle reto, Contenido del Reto, vaya, si se enian vacios se guarda la consulta.

COMO - Juez

Instalacion.

Descarga el paquete de Juez, descomprimelo y copia los archivos a tu carpeta del Servidor Web, despues edita el archivo funciones.php y en la funcion conectar() debes sustituir los valores de TU_USERNAME y TU_PASSWORD por el username y password que tienes en tu Base de Datos de MySQL (oviamente debes tener instalado mysql).

En seguida puedes utilizar el archivo base.mysql para poder crear la Base de Datos con las Tablas de una forma rapida :D.

Ya Por ultimo abre el archivo index.php y ves hasta la linea 59, en esa linea veras:
Código
if( proteger_cadena($_POST["user"])=="TU_USERNAME" && proteger_cadena($_POST["pass"])=="TU_PASSWORD" )

Editala y sustituye los valores de TU_USERNAME y TU_PASSWORD, por el username y password que quieras usar para administrar los retos.

Agregando Retos.

Una ves instalado el Juez, accede a tu web (localhost) donde pusiste Juez, y veras al menu de Admin, se desplegara un formulario donde escribiras el Username y Password de Administracion, despues el Nombre de tu Reto y el Contenido.

Código
# formulario para agregar un nuevo reto
echo '<p><form action="index.php?id='. proteger_cadena($_GET["id"]). '" method="POST"><table>
<td>User: </td><td><input type="text" name="user"></td><tr>
<td>Clave: </td><td><input type="password" name="pass"></td><tr>
<td>Nombre Reto: </td><td><input type="text" name="reto_name"></td><tr>
<td>Dificultad: </td><td><select name="level">
<option value="1">Facil</option>
<option value="2">Intermedio</option>
<option value="3">Dificil</option>
<option value="4">Dios</option>
</select></td>
<td colspan="2">Contenido Reto:</td><tr>
<td colspan="2"><textarea name="reto_contenido" style="width:300px;height:200px;"></textarea></td><tr>
<td colspan="2"><input type="submit" value="Enviar" name="boton"></td>
</table></form>'
;

MUY IMPORTANTE dentro del TextArea de Contenido del Reto (en el formulario), se supone que debes escribir de lo que consta el reto y despues cuando vayas a indicar las entradas que hara el Juez como metodo de comprobacion de tu programa y mostrar las salida "exitosa" que se supone debes obtener, debes usar dos tags BBCode que he creado, que son:

Código
# Ejemplo de Redaccion de Contenido del Reto

En este reto deberas cumplir lo siguiente:
 
[input]2x1[/input]
 
[output]2[/output]
 

Las Etiquetas BBCode de INPUT y OUTPUT seran interpretadasa al momento de que un usuario vaya a la listade retos y acceda al reto, los que has escrito dentro de las etiquetas se mostrara en un TextArea (para cada etiqueta), y con el texto por encima de: Entrada: o Salida: (segun sea la etiqueta).

Como Compila Juez?

Como bien se explico, los retos son solo enunciados textuales que en primera parte describen el reto/problema/enunciado y llevan etqieutas INPUT y OUTPUT, por cada etiqueta INPUT debe haber un OUTPUT, ya que una etiqueta INPUT indica que lo que este escrito dentro, es lo que introducira el Juez al correr tu codigo fuente compilado (programa), y el Juez esperar como resultado, que tu programa envie lo que esta dentro de la etiqueta OUTPUT.

Es por eso que la creacion de retos no tiene ninguna dificultad, ni tampoco se requiere que la persona que cree/realize/plantee un reto interesante, tenga que poner el codigo que resuelva el reto... El Reto lo resuelve el interesado que accede al reto, solo que si se les pide que el reto tenga logica y que exista una solucion.

La compilacion y ejecucion de programas en PHP se logra mediante las funciones system() y/o exec(), y el Juez utiliza las etiquetas INPUT para introducirlas al programa, espernado como resultado el contenido de la etiqueta OUTPUT.

Seguridad en Codigos Fuente

En primer instancia unicamanete se me ocurre que para evitar que un usuario ejecute codigo malicioso, haga llamadas a funciones de sockets, etc, etc.. que comprometan el Servidor donde corre el Juez, es que simplemente antes de que el Juez compile y corra el programa, se realize una llamda de apertura de archivo fopen(), en donde se eliminen las headers que puedan comprometer el Servidor, por ejemplo estas headers:

Código:
## Header de Linux
sys/socket.h
fcntl.h
sys/stat.h
netinet/in.h

## Headers de Windows
winsock.h

Seria la unicamanera de moemento, que se le considere rapido....

La otra forma seria correr un programa alterno dentro dle Servidor en donde este programa limitara la ejecucion de comandos/funciones, pero seria un poco mas engorrozo, tardado y suceptible a mas bugs.


« Última modificación: 5 Noviembre 2009, 18:27 por Diabliyo » En línea

isseu


Desconectado Desconectado

Mensajes: 305


°º¤ø,¸¸,El conocimiento es poder°º¤ø,¸¸,ø¤º°`°º¤ø,


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #1 en: 5 Noviembre 2009, 01:56 »

algo asi como los jueces de webs como z-trening.com?? muy buen aporte...

sobre lo del proceso de compilacion, ¿que te falta?, ¿solo se necesita tener instalado gcc y llamarlo por system() o no? y además tambien podria tener algo de AJAX para cuando esta listo el resultado del "juez"


« Última modificación: 5 Noviembre 2009, 01:58 por isseu » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #2 en: 5 Noviembre 2009, 01:59 »

No... las llamadas a system() o exec() las incorpora PHP, el problema es que por seguridad algunos servidores gratuitos las BLOQUEAN :(

Flataria el code para el proceso de compilacion, entrada de argumentos y comprobaciond e resultados !!

En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.062


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #3 en: 5 Noviembre 2009, 07:55 »

Muy bueno, has hecho lo que a mi mas me costaba, la parte del CMS con php  ;D. Ahora claro, para usar exec() necesitas un servidor dedicado o un servidor propio. A ver si por la tarde tengo tiempo y puedo hacer algo en C que filtre y compile código y luego que le pase la salida del programa al php. Pero nada de gcc! Visual Studio bajo Win32 mejor no? Así permitimos usar código nativo, no sólo de la stdlib de C, lo que hace más interesante el intento de explotar algún bug.

SAludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #4 en: 5 Noviembre 2009, 15:08 »

Hola:

Solo recuerda que para realizar explotacion de bugs tienes que tomar en cuenta el S.O que hirias a explotar, oviamente si es un servidor Windows el que compila y corre el codigo, entonces seria codigo cd ANSI C, lo del API Win32 seria solo para las APIs, en si lo importante solo seria la extraccion de informacion.... Oviamente esto seira una explotacion local, porque remota pues no impota el S.O sobre el que se compile el code :D (total se adapta).

La idea prinicpal es primero la implmentacion de system() y exec(), ya que yo de momento no me decido por ninguna de las dos, ya que como casi no las uso, no tengo idea cual es mas segura que otra, ya que ambas hacen lo mismo.

Una vez con ese pedazo de codigo seria bueno que alguien subiera el codigo y lo corriera en servidores gratuitos, para ver si a alguno se le ha escapado el uso de la funcion system() o exec() y corra :D.

OJO la funcion principal no es tanto el hacking de un servidor que corra el Juez, sino que el programa Juez brinde el servicio que se supone debe dar (Retos de Programacion - Wargame).

Por cierto.. se me olvido comentar sobre las etiquetas INPUT y OUTPUT que implemente en el Jues de Programacion, estas etiquetas bbcode tienen la funcion de indicarle al usuario lo que se supone introducira el juez a su programa (input) y la salida que se debe obtener (output). Editare el Post Principal

bye
En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.062


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #5 en: 5 Noviembre 2009, 15:32 »

Yo digo de intentar buscar un servidor windows porque nos facilita el trabajo  :xD. Por ejemplo, si quieres poner ejercicios solo de el programa tiene que recibir X entrada y sair con Y valor, pues si, da igual, pero se pueden poner ejercicios más imaginativos, como leer X clave del registro de Windows, crear X archivo en tal sitio, no se, mas cosas que lo típico de cin y cout. Para controlar eso, se puede programar algo parecido a lo que tienen los antivirus, un emulador, que sería llamado por el código en php, y que se encargaría de comprobar si el código funciona correctamente, si se llama correctamente a las apis, vamos, que se podría analizar más que la salida del programa, y ofrecería tambien relativa seguridad, ya que se podría prohibir acceder a ciertas apis etc.

Con lo del servidor pues estará difícil que uno gratuíto sirva, ten en cuenta que tiene que permitir instalar el compilador  :-\.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #6 en: 5 Noviembre 2009, 15:58 »

Yo digo de intentar buscar un servidor windows porque nos facilita el trabajo  :xD. Por ejemplo, si quieres poner ejercicios solo de el programa tiene que recibir X entrada y sair con Y valor, pues si, da igual, pero se pueden poner ejercicios más imaginativos, como leer X clave del registro de Windows, crear X archivo en tal sitio, no se, mas cosas que lo típico de cin y cout. Para controlar eso, se puede programar algo parecido a lo que tienen los antivirus, un emulador, que sería llamado por el código en php, y que se encargaría de comprobar si el código funciona correctamente, si se llama correctamente a las apis, vamos, que se podría analizar más que la salida del programa, y ofrecería tambien relativa seguridad, ya que se podría prohibir acceder a ciertas apis etc.

Con lo del servidor pues estará difícil que uno gratuíto sirva, ten en cuenta que tiene que permitir instalar el compilador  :-\.

Saludos

En Servidores Linux por defecto viene el compiler instalado, en Windows no :D... Sobre el lenguaje de pogramacion seria C (el que acepta el Juez), C++ no se ha implementado en el Juez, y el compilador pues como aun no se hacen las funciones para llamar a system() y exec(), pues podriamos poner un SELECT para quien lo vaya a subir/implementar en su servidor propio pueda usarlo sobre Windows y/o Linux (gcc).

Sobre lo que mencionas de comprobar la salida para retos de uso de APIs, suena interesante, solo que no me imagino como se haria :S, ya que si al compilar no salen errores, entonces como se supone que el Juez comprobara la salidas ?? si son APIs :S... ??

En fin, espero y alguien aporte un Servidor Casero abierto :D, para testar :D, o como minimo que aportes funciones o retos en forma de enunciados :D... Yo podria abrir mi servidor y darles un dominio de no-ip.org que apunte a mi IP, pero el problema es que aqui es Cybercafe y la pagina se les alentara para los que accedan !!... Siempre esta rebusnando de gente viendo Videos YouTube a lo loco :S...

bye
« Última modificación: 5 Noviembre 2009, 16:01 por Diabliyo » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.062


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #7 en: 5 Noviembre 2009, 16:09 »

Yo lo estoy montando en mi pc, voy a ver si consigo programar algo para comprobar la salida (por lo menos comprobar que devuelve el programa cuando llama a printf, luego ya se podría hacer con más apis) y doy el link al cms instalado en mi pc, pero antes quiero tener algo de control, no quiero dejar que cualquiera pueda ejecutar código en mi pc  :xD.

Lo de comprobar la salida de las apis, pues yo he pensado lo siguiente. El "Juez" en C crea un proceso y carga el exe compilado, y luego hookea printf para que cuando retorne, le pase al programa en php la salida. Luego se puede hookear cualquier api, tanto para restringir como se usa, para "impedir" usarla, comprobar retorno, comprobar parametros que se le pasan etc. A ver si éste fin de semana puedo tener el programa en C que ejecute y hookee el programa  :P.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #8 en: 5 Noviembre 2009, 17:02 »

Hola:

Los animo a que pongan sus retos escritos o bien pegados para insertarse directo por mysql :D...

Les dejo un respaldo en mysql de la tabla retos del programa, vienen cuatro retos que hice hace rato :D

Ver Respaldo: http://pastebin.com/f6f87f10e

Hacker_Zero muy buena idea, si consigues de cierta forma poder hacer que el programa brinde un nivel de seguridad "considerable" seria bueno compartas el codigo, de esta forma podemos brinda el codigo del juez con un directorio extra (dentro del paquete) que seria: run/, en este directorio se proporcionara el Codigo Fuente y Ejecutable que deberia correr el usuario que quiera implementar el Juez en su Servidor Casero :D. Por mi parte me gustaria ver tu code y ver que puedo hacer para aplicarlo en Linux y proporcionar un Codigo similar.

# ls -l /home/miusuario/public_html/juez_descoprimido/
Código:
run/win_security.c
run/win_security.exe
run/linux_security.c
run/linux_security
« Última modificación: 5 Noviembre 2009, 17:09 por Diabliyo » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.062


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #9 en: 5 Noviembre 2009, 17:36 »

Sin problema, en cuanto lo tenga lo compartiré con gusto, pero aún no pude ni empezarlo, éste fin de semana intentaré tener algo, si luego fueras capaz de portarlo a GNU/Linux sería buenísimo, pero va a estar complicado  :-\.

Saludos

PD: Para lo del servidor, igual sirdarckcat puede hacerle un hueco en el server de la warzone cuando esté listo  :-\.
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #10 en: 5 Noviembre 2009, 18:01 »

Hacker_Zero, seria bueno que sirdarckcat nos ayude con el alojamiento :D, claro, de entrada el codigo esta fresco y seria bueno tomar en cuenta por mientras correrlo solo de forma casera, ya que si se monta en un servidor dedicado en linea, algun astuto lamer querra darselas de muy hacker y explotar algun bug, y arruinar infrormacion valiosa que almacene el servidor.

bye
« Última modificación: 5 Noviembre 2009, 18:03 por Diabliyo » En línea

Jubjub


Desconectado Desconectado

Mensajes: 708


Lay Ladie lay,...


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #11 en: 5 Noviembre 2009, 18:07 »

Asegurad un poco el tema, porque si vais a permitir ejecutar codigo alegremente sin mas, va a durar poco el proyecto :laugh:
En línea

Jugando con Fósforoshacking con un tono diferente


.
porno
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #12 en: 5 Noviembre 2009, 18:12 »

La idea de ejecutar un programa seria por cuestion de seguridad, para que el Juez trabaje con dicho programa (alternamente) y que brinde seguridad al momento de ejecutar las compilaciones de las fuentes que proporcionen lo usuarios...

Revisa bien el tema por favor y checa que no hay nada escondido, por algo esta la fuente :S

He redactado un numero tema en el post principal, es sobre Seguridad, chequenlo please !

« Última modificación: 5 Noviembre 2009, 18:27 por Diabliyo » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.062


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #13 en: 5 Noviembre 2009, 18:29 »

Permitir ejecutar código es un tema bastante complicado, por lo que llenaré el programa de hooks y comprobaciones paranóicas a ver si consigo un nivel mínimo de seguridad, por ejemplo de momento estaría bien restringir el uso de apis a solo printf y scanf, asegurandose de que de ninguna forma se puede llamar ninguna otra api, y luego ya podemos ir añadiendo más apis al asunto  :P. Va a ser una programación divertida  jaja.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Diabliyo


Desconectado Desconectado

Mensajes: 1.270


M.S.I Angel Cantu


Ver Perfil WWW
Re: Juez de Programacion - v1.0 [Beta]
« Respuesta #14 en: 5 Noviembre 2009, 21:52 »

Hola:

Ya logre implementar una funcion en PHP que verifica las cabeceras #include de los codigo fuente, excluyendo codigos fuentes que no cumplan con las cabeceras pre-definidas en un arreglo.

Ahorita en unos segundo edito el post principal y coloque en este mismo tema (editando) el code de la funcion.

Con esto podremos evitar ejecutar codigo malicioso, vaya, porque por lo general los codigos maliciosos hacen llamadas a funciones de: system() de stdlib.h, socket() de sys/socket.h, etc... Solo abra que tener cuidado de declarar en el arreglo de cabeceras seguras solo y unicamente cabeceras que no danien al sistema ni permitan llamdas a funciones que der muchas libertades al usuario.

bye
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines