Notas de ciberseguridad

César Isaac López Figueroa.

View on GitHub Profile HackTheBox

./issk.sh 2>/dev/null &;disown

Apuntes: Compiladores


gcc

Es el compilador por defecto de c, su funcionalidad es sencilla

cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF

gcc -o /tmp/rootshell /tmp/rootshell.c

Otra manera es esta, en este caso lo hacemos con una libreria

gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c #una libreria

En este ejemplo con shared creamos una libreria compartida lo que significa que podrá ser ejecutada desde el interior de otro programa compilado, en la memoria. El fPIC significa que la libreria carge independientemente de la posicion ,por ejemplo aqui si no estuviera especificado el fPIC no podria cargar en otra posicion que no sea la 100. offset position.

100: COMPARE REG1, REG2 
101: JUMP_IF_EQUAL 111 ... 
111: NOP

Como su propio nombre indica te permite maniobrar sobre la pila.

go

Si se te ha creado un direcctorio completo formado con aplicativos basados en go (“existira un main.go”) podemos compilar la aplicación que queramos generar con go build.

Tambien podemos generar el aplicativo utilizando

go get github.com/tomnomnom/httprobe

De esta manera generaremos el archivo direcctamente en la carpeta go.

Tambien podemos usar esto: Cross-Compile

GOOS=linux GOARCH=amd64 go build .

#Cuando compilamos una aplicacion, se tiene en cuenta la arquitectura de la maquina, con cross-compile podemos definir la arquitectura

GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" .

go es la herramienta para administrar las dependencias y archivos en go.

go build . #Te permite compilar un archivo go.
go build -ldfalgs "-s -w" .
#Compilar con menor peso, luego podemos usar la combinatoria de upx brute en caso de que queramos reducir mas su peso.

go get te permite añadir una dependencia hecha en go y la instalaría inmediatamente. -u = indica el uso de la red para actualizar el nombre de paquetes y sus dependencias. -v = verbose

Con go run podemos ejecutar un programa go no compilado. go run file.go

i686-w64-mingw32-gcc

Cross compiler, lo que quiere decir es que se puedes realizar una compilacion de un script que se ejecutara en una plataforma como windows como puede ser un .exe en linux u otra plataforma.

i686-w64-mingw32-gcc text.c -o exploit -lws2_32

Este programa es un cross compiler

javac

Es un compilador de java.

“jd-gui”

Es un comando con interfaz grafica que te permite ver el contenido que tiene una archivo .class, este no es mas que un archivo java previemente compilado.

javap Es un comando que nos permite ver la información del código de un archivo .class, en otras palabras desensambla el código.

Make

Este es un compilador que utiliza un programa en c con un Makefile.

Octocat