jeudi 23 juillet 2015

Nebulla - level 12

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