WPICTF 2020
Contents
Recon
inspector
my sources tell me that the flag might be at wpictf.xyz
In https://wpictf.xyz source code, there is a comment <!-- If you are looking for a WPI{FLAG}, you CANT be a robot! -->.
We take a look at https://wpictf.xyz/robots.txt, and there is User-agent: * Disallow: /inspector.txt.
Access https://wpictf.xyz/inspector.txt, and it gives us I heard that the WPICSC club webpage may be of use to you..
Read source code in https://web.cs.wpi.edu/~csc/index.html, and we see a comment <!-- VGhpcyBzaXRlIGlzIHB1cmVseSBpbmZvcm1hdGlvbi4gQnV0IHdlIGFwcHJlY2 lhdGUgdGhlIGVmZm9ydCBkZWNvZGluZyB0aGlzLg== -->, but after decoding it with base64, we get This site is purely information. But we appreciate the effort decoding this..
After further investigation in the source code, we get another comment <!-- Check out our prizes-->.
Access https://ctf.wpictf.xyz/prizes, and we can see the flag WPI{1nsp3ct0r_H@ck3R} in the comment.
dns_wizard
Can you find it?
Run dig wpictf.xyz TXT, and we can see a base64 encoded string V1BJezFGMHVuZF9UaDNfRE5TLXJlY29yZH0=.
After running echo -n "V1BJezFGMHVuZF9UaDNfRE5TLXJlY29yZH0=" | base64 -D, we can get the flag WPI{1F0und_Th3_DNS-record}.
hellofellowchallengers
The flag could be any one of us! He could be in this very room… He could be you! He could be me! He could even be…
I create a script to get the strings containing wpi, flag, or fellow in teams particpating WPICTF.
|
|
And we can get <a href="/teams/568">WPI{the_best_teams_make_the_flags}</a>, which contains our flag.
Reverse
danger-Live-and-Malicious-Code
Like the title says, this challenge is dangerous and contains live malware.
We get a html contains javascript. Use JS Nice to give it a better look.
|
|
We deleted the line with popupWindow and execute it, since with the for loop at the end of the file, it will give us infinite popup windows.
c, d, and e are strings. When we concat them, we can see the flag WPI{Oh_nose_procoding_detected}.
Linux
Suckmore Shell 2.0
After its abysmal performance at WPICTF 2019, suckmore shell v1 has been replaced with a more secure, innovative and performant version, aptly named suckmore shell V2.
After we ssh into smsh@smsh.wpictf.xyz, we use ls to see the flag.
Execute more flag, and we can get the flag WPI{SUckmoreSoftwareN33dz2G3TitTogeTHER}.
Web
👉😎👉
👈😎👈Zoop👉😎👉Zoop…

On the website, Frank said we need to send a file to him. So we press Attach.

In this window, we can preview the text in a given file. Change the url to http://storage.zoop/flag.txt , and we can see the flag WPI{tH4nKs_z00m3r_jh0n50n}.
dorsia2
Firefox doesnt like the page… try chromium.
We get the source code to this challenge from a video.
|
|
Using Burp Suite to modify the request of the website to the following.
|
|
And we can get the flag WPI{1_H4VE_2_return_SOME_VIDE0TAP3S}.
autograder
A prof made a little homework grader at https://autograder.wpictf.xyz/ but I heard he is hiding a flag at /home/ctf/flag.txt

It tells us to enter our code and solve the problem, but actually, we don’t need to care about it.
Add include "/home/ctf/flag.txt" to the code, we will get error message, and it contains the flag WPI{D0nt_run_as_r00t}.

Pwn
dorsia3
nc dorsia3.wpictf.xyz 31337 or 31338 or 31339
We are given the source code, the executable, and its libc libc.so.6.
|
|
It is a problem of format string vulnerability with printf.
First, we get the address of a and system - 288, from gdb, we can see that the return address is at a + 113.
Use one_gadget to find useful gadgets. We get one in libc.so.6 at 0x3d0e0.
The address of system is at 0x3d200 in libc.so.6, we can have our gadget address at run time with (system - 288) + 288 - 0x3d200 + 0x3d0e0.
With both the address of return address and our gadget, we can get the shell by sending format string vulnerability payload.
|
|
After we get the shell, we can get the flag WPI{Th3re_is_an_idea_of_4_Pa7rick_BatemaN}.
Author L3o
LastMod 2020-04-21