Alice sent the image to Bob but the image is corrupted, recover the original image and find the flag from the image.
Author - DIVAS
This challenge is very easy. Before getting into any steg tool, I used strings to extract any string that had horizon in it and grepped it so that I could get the flag because the format of the flag is horizonCTF{}.
Analyze the provided pcap file to find the hidden encflag. The flag is encrypted with an XOR cipher and is located in a packet sent to port 12345. Decrypt the flag using the provided key and submit it in the format flag{...}.
Author- Abishek
Files: challenge.pcapng , decrypt.py
After opening the challenge.pcapng file using Wireshark there were over 2000+ packets but still I went through a few packets and got a fake flag:
flag{m6yb3_i_am_the_Fl4g}
In the description, it is given that they have encrypted it in XOR. In the terminal, I used strings challenge.pcapng | grep flag. After using the command, I found something suspicious encflag{. To get the raw data, I built a Python tool called Packet_reader. After extracting all the raw data, I found the encflag:
encflag{\n\x1a\x06/\x07\x0e\x1e\x0e:\t\x10\x14\x03/\x05\x0e\x02\x0e\x0b\n\x1a\x16}
and found the key in the same way key = suspcapkeyx. Use the decrypt.py to get the flag:
horizonCTF{you_done_pcap_forensic}
Alice knows that the flag is hidden inside the image and there is a bunch of passwords in a list. Would you help Alice find the flag?
Files: artic.jpg, wordlist.txt
In the description, I saw a bunch of passwords and a wordlist.txt in the given files. As soon as I saw that, I knew that this was a stegcrack challenge. I used stegcracker and with the help of the tool, I cracked the password using the command:
stegcracker artic.jpg wordlist.txt -V -o flag.txt
After cracking the password, I found the flag:
horizonCTF{5t3g_4r3_50_fun}
java java javascript
Author jones
Files: 1.html
const rotateArray = function(array, count) {
while (--count) {
array.push(array.shift());
}
};
const _0x59d7 = [
'0x13f', 'value', 'getElementById',
'Correct password! Flag:', 'Incorrect password',
'pwd', 'map', 'charCodeAt', 'length',
'from', 'filter', 'push', 'shift', 'while', 'return'
];
rotateArray(_0x59d7, 0x15f);
const _0x3c9f = function(index) {
index = index - 0x0; // Normalize the index
return _0x59d7[index];
};
function xtsca() {
const getValueById = _0x3c9f;
const correctPassword = [
104, 111, 114, 105, // 'hori'
122, 111, 110, // 'zon'
123, 100, 101, // '{de'
51, 109, 95, // '3m_'
99, 48, 48, 108, // 'c00l'
125 // '}'
];
const enteredPassword = document.getElementById('pwd').value;
const enteredPasswordCodes = Array.from(enteredPassword).map(ch => ch.charCodeAt(0));
if (enteredPasswordCodes.length !== correctPassword.length) {
alert('Incorrect password');
return;
}
for (let i = 0; i < enteredPasswordCodes.length; i++) {
if (enteredPasswordCodes[i] !== correctPassword[i]) {
alert('Incorrect password');
return;
}
}
alert('Correct password! Flag:');
}
After opening the 1.html file, I saw that the one function and had a keyword
flag and was entirely obfuscated. After analyzing and deobfuscating
the code, I found that the password was a string of characters that corresponded to ASCII values
deobfuscated code:
const rotateArray = function(array, count) {
while (--count) {
array.push(array.shift());
}
};
const _0x59d7 = [
'0x13f', 'value', 'getElementById',
'Correct password! Flag:', 'Incorrect password',
'pwd', 'map', 'charCodeAt', 'length',
'from', 'filter', 'push', 'shift', 'while', 'return'
];
rotateArray(_0x59d7, 0x15f);
const _0x3c9f = function(index) {
index = index - 0x0; // Normalize the index
return _0x59d7[index];
};
function xtsca() {
const getValueById = _0x3c9f;
const correctPassword = [
104, 111, 114, 105, // 'hori'
122, 111, 110, // 'zon'
123, 100, 101, // '{de'
51, 109, 95, // '3m_'
99, 48, 48, 108, // 'c00l'
125 // '}'
];
const enteredPassword = document.getElementById('pwd').value;
const enteredPasswordCodes = Array.from(enteredPassword).map(ch => ch.charCodeAt(0));
if (enteredPasswordCodes.length !== correctPassword.length) {
alert('Incorrect password');
return;
}
for (let i = 0; i < enteredPasswordCodes.length; i++) {
if (enteredPasswordCodes[i] !== correctPassword[i]) {
alert('Incorrect password');
return;
}
}
alert('Correct password! Flag:');
}
the flag is :horizonCTF{de3m_c00l}