This challenge was solved by and the write up was written by one of my teammates, NGG.
The task was to crack Diffie-Hellman key exchange protocol in a group where elements correspond to Fibonacci numbers.
The base element was the 2-by-2 matrix [[0,1],[1,1]], and the group was what this base generates over a finite field of a given prime order.
All elements of this group have the form [[a,b],[b,a+b]], so the public keys (the group elements) were represented by (a,b) pairs, the private keys were represented with the exponent.
I needed a hash table with 900 million elements in order to do so, and had to use 128-bit arithmetics for internal computations, but these are not a problem on x64 Linux if you have 64 GB RAM.
The program below used 49 GB RAM and ran for about 20 minutes on a single core.
After finding the private key of the server, the following python script printed the flag.
The flag was:
randBox
This challenge was solved by and the write up was written by one of my teammates, nguyen.
There are 10 rounds, some round did manually, ex: round1 is rot-N subs ; round2 is a tranposition ; round3->5 can be cracked using round1 approach; …
The flag was
dub-key
This challenge was solved by and the write up was written by one of my teammates, NGG.
This code cracks the signature scheme:
The flag was:
wob-key & wob-key-hard
This challenge was solved by and the write up was written by one of my teammates, NGG.
After a few hours of trial and failure, I came up with the following solution:
The flags were:
calcpop
This challenge was solved by and the write up was written by one of my teammates, nguyen.
It was a simple buffer overflow vulnerability.
The flag was
calpop reloaded
This challenge was solved by and the write up was written by one of my teammates, nguyen.
Steps to solve the challenge:
set environment for calc_reloaded with RedOS package
got EIP control and arbitrary code execution in calc_reloaded
make shellcode for this OS
use getdirent syscall to find that out name of flag file Mes5 wi+h the b3st, d1e l1k3 the rest
The flag was
cards
This challenge was solved by and the write up was written by one of my teammates, nguyen.
Steps to solve the challenge:
get .text address in stack after play game
send payload to leak one of these address
send payload to corrupt return address in stack
make it to return to printFlag
The flag was
BWS
This challenge was solved by and the write up was written by one of my teammates, nguyen.
The vulnerability was in the URL parsing function. If you passed /../ as an URL it could read before the output buffer until the next “/” character.
The exploit code was:
Running it on the real server gave us the flag:
Get help
The flag was in the topic of the official 9447 CTF IRC channel #9447ctf on freenode:
4w1h
We had to find a few locations by their Google Street View images. After finding the exact locations, we had to collect the directions where the little man looked.
These are the URL of the Google Street View images and directions which gave us the flag (the text of the URLs are places which they depict or which could be identified the easiest):
This challenge was solved by and the write up was written by one of my teammates, nguyen.
Simple: run it!
The flag was:
The real flag finder
This challenge was solved by and the write up was written by one of my teammates, nguyen.
Lot of math stuff, it will give the flag - lol NOT :)
Steps to solve the challenge:
just start gdb
run the program
put a breakpoint where it writes that you lost
read the flag from the memory (it stores it and compares it with your input)
The flag was:
danklang
This challenge was solved by and the write up was written by one of my teammates, VEK.
The code first had to be converted to some real language like python.
After this, it was still slow and ate a lot of memory, so it had to be optimized.
I wrote a C++ version that replaced the recursions with dynamic programming:
Hello, Joe
This challenge was solved by and the write up was written by one of my teammates, nguyen.
In ctf, many team solved it fast, maybe not too hard, so i decompile code and get it fast:
imaged
This challenge was solved by and the write up was written by one of my teammates, nguyen.
Flag is the CRC of the first 7 chunks:
binned
This challenge was solved by and the write up was written by one of my teammates, nguyen.
Flag is the id of syscalls executed:
The flag was:
gife up now
This was an animgif with a lot of QR codes.
The QR codes contained words multiple times.
The occurence count of the words gave us the following sequence:
The QR code text contained the hint for the challenge:
two parts, all lower, add 9447{ to start and } to the end, first looks like “7do”, cut off 450ms, second like https://www.youtube.com/watch?v=5xxTkB5bGy4 like faucet script
The delay between some frames was 400ms, and 500ms for others. Interpreting this as morse code (500ms = -, 400ms = .) gives us this sequence:
Although we did not know where were the pauses, we could use the fact from the hint that the alphabet only contained “7do” characters.
This gave us the following form:
Which was translated to ASCII from morse:
The second part of the hint suggested that we should use Tap code:
Which translates to:
The final flag was:
sanutf8y_check
The challenge description gave us the following website: http://sanutf8y-check-n2wisexx.9447.plumbing which contained the flag with unicode characters. Writing them down with normal ASCII characters gave us the flag the scoreboard accepted.
YWS
Sending GET /.. HTTP/1.1 with nc listed the file names from the parent directory (outside files), and one of the directory names was the flag.
premonition
The vulnerability was an SQL injection in the operator string.
Error text leaked, from which I saw spaces were removed (also I had to send a valid user-agent).
I solved the problem with a boolean-based technique (it could be solved much easier though). First I get the table names and found the s3ekr17_passwords table.
Then requested the contents of it. It was an (userid, password) tuple, where the password was only one character from the flag and the userid was the position of the character in the string.
A part of my solver code:
nicklesndimes
The website used the same framework as the CTF, where I could reset the admin’s password, and whitelist my IP address with the code found in the main javascript file of the site (although I had to log in with an other user to make this work).
This challenge was a VM implemented where every instruction was an emoji. For the first part of the challenge we had to reverse a flag ch...… Continue reading