diff options
author | Malf Furious <m@lfurio.us> | 2019-05-05 02:49:51 -0400 |
---|---|---|
committer | Malf Furious <m@lfurio.us> | 2019-05-05 02:49:51 -0400 |
commit | 43ff254c2d86b66888d4e66ae094d1b7bc791622 (patch) | |
tree | 6720b2f33a472f4b42f436fede010068f73e2a10 | |
parent | 1b7813de48756dae651154f586a77b9c90842aed (diff) | |
download | lib-des-gnux-43ff254c2d86b66888d4e66ae094d1b7bc791622.tar.gz lib-des-gnux-43ff254c2d86b66888d4e66ae094d1b7bc791622.zip |
Import IceCTF 2018/Lost in the Forest writeup from the wiki
Signed-off-by: Malf Furious <m@lfurio.us>
-rw-r--r-- | docs/writeups/IceCTF_2018/Lost_in_the_Forest.txt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/docs/writeups/IceCTF_2018/Lost_in_the_Forest.txt b/docs/writeups/IceCTF_2018/Lost_in_the_Forest.txt new file mode 100644 index 0000000..de6c6b9 --- /dev/null +++ b/docs/writeups/IceCTF_2018/Lost_in_the_Forest.txt @@ -0,0 +1,66 @@ +"You've rooted a notable hacker's system and you're sure that he has hidden +something juicy on there. Can you find his secret?" + + +Setup +----- +We are given a zip file, which contains a backup of the hacker's filesystem. + + +Solution +-------- +A quick search shows nothing of interest outside of /home. However, inspecting +/home show a Pictures directory with several files named like "..._500.jpg", +perhaps something to pay attention to. In addition, Desktop/ contains a +clue.png file. If you spend much time studying these files you'll not turn up +any leads, as the real file of interest is the mysterious "hzpxbsklqvboyou" file +in the home directory. + +There's no obvious way to make sense of this file. All of our real clues will +come from the hacker's .bash_history file. The history file is mostly junk, but +these few lines are significant: + +wget https://gist.githubusercontent.com/Glitch-is/bc49ee73e5413f3081e5bcf5c1537e78/raw/c1f735f7eb36a20cb46b9841916d73017b5e46a3/eRkjLlksZp +mv eRkjLlksZp tool.py +./tool.py ../secret > ../hzpxbsklqvboyou +shred secret +rm tool.py + +This explains where our "hzpxbsklqvboyou" file came from as well as what +happened to the original secret. + +If you download the sourced Python script, you'll get this: + +#!/usr/bin/python3 +import sys +import base64 + +def encode(filename): + with open(filename, "r") as f: + s = f.readline().strip() + return base64.b64encode((''.join([chr(ord(s[x])+([5,-1,3,-3,2,15,-6,3,9,1,-3,-5,3,-15] * 3)[x]) for x in range(len(s))])).encode('utf-8')).decode('utf-8')[::-1]*5 + +if __name__ == "__main__": + print(encode(sys.argv[1])) + +It takes a filename on the command-line, reads the first line of that file, and +applies several mutations to that text before printing it to stdout. + +Now we know how secret was encoded. Reversing this code gives us the following +function, which we can run over "hzpxbsklqvboyou" to recover the original secret. + +def decode(filename): + with open(filename, "r") as f: + s = f.readline().strip() + s = s[:int(len(s)/5)][::-1] + s = base64.b64decode(s) + + lut = [5,-1,3,-3,2,15,-6,3,9,1,-3,-5,3,-15] * 3 + s = (''.join( [chr( s[x] - lut[x]) for x in range(len(s))])) + + return s + +if __name__ == "__main__": + print(decode(sys.argv[1])) + +IceCTF{good_ol_history_lesson} |