Olá galera, nesse post explico como compilar seus códigos em C com Shell Script.

Habilitando CGI:

$sudo nano /etc/apache2/mods-available/cgi.load

LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so

$sudo nano /etc/apache2/mods-enabled/cgi.load

LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so

$sudo nano /etc/apache2/mods-enabled/mime.conf

AddHandler cgi-script .cgi .sh

$/etc/init.d/apache2 restart

Vamos lá.

Criar os Arquivos e dar as permissões.

$touch codigo1.c & chmod 777 codigo1.c

$touch codigopronto.c & chmod 777 codigopronto.c

$touch teste.php & chmod 777 teste.php

Código simples que iremos compilar pra testar:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
float a=4.3,b=6.5,c;
c =a*b;
printf(“%f\n”, c);
system(“PAUSE”);
return 0;
}

O Bash:

#!/bin/bash

read POST
CODE=$(echo $POST | cut -d ‘&’ -f 1 | cut -d ‘=’ -f 2)
#CODE=$(echo $POST)
echo ‘Content-Type: text/html; charset=utf-8’
echo
echo -e ‘<html>
<body bgcolor=#00FF66>’
echo “<h1>Compilador:</h1>”
echo -e ‘Code C++:
<form method=”POST”>
<textarea name=”code” rows=”10″ cols=”40″></textarea>
<br>
<input type=”submit” name=”submit” value=”Enviar” >
</form>’
echo ‘<pre>’
echo $CODE > codigo1.c
php teste.php > codigopronto.c
gcc codigopronto.c -o codigopronto
./codigopronto
echo ‘</pre>’
echo ‘
</body>
</html>

Primeiro lemos por POST e cortamos as expressões “&” e “=”que irão receber a variável CODE.

root1

Como ficará o nosso form.

root2

Voltando ao nosso Bash, na linha echo $CODE > codigo1.c e jogando todo o conteúdo encodado pro arquivo codigo1.c

root3

Na linha teste.php recebemos a variável encodada por gets_contents e desencodamos com a função urldecode e jogamos pra finalmente pro nosso codigopronto.c .

root4

nosso codigopronto.c desencodado, agora só rodar com gcc codigopronto.c -o codigopronto

root5

Resultado final do nosso código compilado.

root6

Rodolfo

Rodolfo

Rodolfo Cr é Engenheiro da Computação, especialista em Pentester em aplicações e Proteção em Servidores Linux e programador em algumas Linguagens. Membro da Roothc com intuito de divulgar e acrescentar conhecimento na área da computação com foco em segurança da informação.
Rodolfo

Latest posts by Rodolfo (see all)