Flareon-22¶
Flaredle¶
Challenge¶
Process¶
Understanding Game / Application Logic¶
- Understand what Yellow, Green and Grey means in wordle
- Green: The letter is right and in the correct position in the word.
- Yellow: The letter is correct but is in the wrong position.
- Grey: The letter is wrong and isn’t in the word at all.
- We notice that in the source code file of the game there is a "words.js" which contains a list of valid words. These words are all small letters and a-z with no numbers or characters.
Python file to count occurence of all Characters¶
We then wrote a python file to count the occurences of characters from A-Z in the wordlist.
import string
def loopWordCount():
testtest = ''
for char in string.ascii_lowercase:
testtest += str(word.count(char)) + ','
return testtest
def create_counted_wordlist():
r_word_file = open(r'C:\Users\flare\Desktop\Script\wordlist.txt','r')
w_word_file = open (r'C:\Users\flare\Desktop\Script\counted.txt','w')
wordlist = r_word_file.readlines()
for word in wordlist :
# print(word +
# loopWordCount() + '\n')
w_word_file.writelines(loopWordCount())
w_word_file.writelines(word)
Comma-separated-value from the occurences of A-Zs.
Parse CSV into Excel / LibreOffice¶
- We will now parse the csv file into excel so that we can filter with each try to finally get the correct word.
- Using this word "AEROBACTERIOLOGICALLY" we know that there are 1
e
, 1i
, 2o
, 1c
. - By Filtering down, we are left with these 2 words, we can filter i.e '0
g
' and we will getflareonisallaboutcats
Flag¶
There we have it the flag.
flareonisallaboutcats@flare-on.com
Pixel Poker¶
Challenge¶
Process¶
PE Profiling with DiE¶
- To check if application is Packed and the high level language used.
- It seems like C++ is used and executable is likely not packed.
Playing Around the Application¶
- We find the fail condition has some strings like "Womp womp... :(", "Please play again!"
Strings¶
-
Using strings (
shift
+f12
), we find the strings that make up the fail condition -
Then we use the x-ref function to see location it has been referenced
-
Then we sift out only for the function that calls it.
Tricking the Program to think that we found the pixel¶
Unlimited Tries¶
- Then we trace back to before it is called. We see that the function does a
cmp 0Ah
where0A
is10
. This seems like the function to check if 10 tries has exceeded. - To get unlimited tries we can use a very convenient function in Cutter the "Edit Instruction" .
- We change the instuction from
jnz
/jne
tojmp
, after 10 tries, it will jump to the exit function, but go the next function.
Function that checks for correct pixel click¶
- Right after the 10 tries check, there are 2
jnz
instructions. As we are searching for pixels, I assume they are the X-axis and Y-axis.
- Again, we are back at Cutter, we use the "reverse jump" function to switch both of the
jnz
/jne
instructions tojz
/je
instructions.
Flag¶
- We open the application, and after one click, and a lag, we get the picture below.