Open your eyes 1/5
Table of Contents
Overview
- 74 solves / 261 points
- Difficulty: Easy
- Overall difficulty for me (From 1-10 stars): ★★☆☆☆☆☆☆☆☆
Background
Sometimes there is more than meets the eye. Be clever and collect the 5 flags. Some are easy, some are hard.
Access the challenge here : https://heroctf.joinopencyber.tech/
Format : Hero{J…}
Author : OPENCYBER
Find the flag
In this challenge, we can access the challenge machine in https://heroctf.joinopencyber.tech/:
Home page:
In here, we can “LOGIN AS A GUEST” or “LOGIN”.
Let’s login as a guest first:
In here, we can send some messages to someone.
Since JavaScript is a client-side language, we can poke around in the source code.
To do so, I’ll open up the “Debugger” tab:
As you can see, it has 2 main JavaScript files: app.js
, main.js
.
But before we look at the main.js
, I found something weird in app.js
:
Hmm… I can see the flag format! (Hero{.*}
)
Now, we can dynamically deobfuscate those JavaScript code!
Note: You can read my recent “PwnMe Qualifications : “8 bits””’s web challenge writeup: Beat me!. It’s a web challenge that exploiting client-side game and dynamically deobfuscating JavaScript code.
That being said, let’s add a breakpoint to variable _0x2e08e0
:
Then refresh the page:
Next, click the “Step Over” button twice:
Nice! We found half of the flag:
However, we can’t step over again, as the if statement in line 31 won’t get passed.
If you look closely, variable _0x45a81e
is function _0x4cbad0()
:
So, we can concatenate the full flag via variable _0x45a81e
!
- Flag:
Hero{J@v@Scr!pt_f!l3s_R_alway$_Nic3_t0_Gr@b}
Conclusion
What we’ve learned:
- Dynamically Deobfuscating JavaScript Code