Bonjour,
Ce niveau est pour
le coup très simple on va voir ca avec ce qu'on nous demande dans un
premier temps :
There is a backdoor process listening on port 50001.
To do this level, log in as the level12 account with the password level12. Files for this level can be found in /home/flag12.
Donc on apprend
qu'une backdoor tourne sur le port 50001 avec le script indiqué
coder en lua :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | local socket = require("socket") local server = assert(socket.bind("127.0.0.1", 50001)) function hash(password) prog = io.popen("echo "..password.." | sha1sum", "r") data = prog:read("*all") prog:close() data = string.sub(data, 1, 40) return data end while 1 do local client = server:accept() client:send("Password: ") client:settimeout(60) local line, err = client:receive() if not err then print("trying " .. line) -- log from where ;\ local h = hash(line) if h ~= "4754a4f4bd5787accd33de887b9250a0691dd198" then client:send("Better luck next time\n"); else client:send("Congrats, your token is 413**CARRIER LOST**\n") end end client:close() end |
On va simplement
lancer netcat dans le but de se connecter à cette backdoor et voir
ce qu'elle fait.
Sans savoir
programmer du tout en lua on peut comprendre assez simplement qu'un
password est demandé. Ce password alors passe par une fonction
hacher notre mot de passe via une fonction system. Le soucis vient
ici du fait que la fonction va utiliser notre password sans faire de
checking pour savoir ce que je vais lui envoyer donc il suffit
simplement que je lui envoie un password avec une commande du système
(la commande sera séparé du password par un simple ; (note je
pourrais aussi utiliser |) et j'aurais fait mon job. Ça ressemble a
un niveau précédent :
Rien de bien
compliqué comme vous pouvez le voir.
Aucun commentaire:
Enregistrer un commentaire