<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>.hidden</title><link>https://dothidden.xyz/</link><description>Recent content on .hidden</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>.hidden</copyright><lastBuildDate>Wed, 29 Apr 2026 18:00:00 +0200</lastBuildDate><atom:link href="https://dothidden.xyz/index.xml" rel="self" type="application/rss+xml"/><item><title>Seminar 0x0F</title><link>https://dothidden.xyz/events/seminar_0x0f/</link><pubDate>Wed, 29 Apr 2026 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x0f/</guid><description> Title Speaker Place Datetime Slides Open Discussion on AI in The Context of Cybersecurity Honesty &amp;amp; mehanix Room 701 @ PBT 29 Apr 2026 18:00 N/A Notes on EternalBlue sunbather Room 701 @ PBT 29 Apr 2026 18:00 N/A A Hacker&amp;rsquo;s Curiosity: Program Internals zenbassi Room 701 @ PBT 29 Apr 2026 18:00 N/A</description></item><item><title>Seminar 0x0E</title><link>https://dothidden.xyz/events/seminar_0x0e/</link><pubDate>Wed, 25 Mar 2026 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x0e/</guid><description> Title Speaker Place Datetime Slides WannaCry: How to steal and use NSA exploits for fun and profit. Mega &amp;amp; MettleSphee Room 701 @ PBT 25 Mar 2026 18:00 Link</description></item><item><title>Seminar 0x0D (Lightning Talks)</title><link>https://dothidden.xyz/events/seminar_0x0d_lightning_talks/</link><pubDate>Wed, 17 Dec 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x0d_lightning_talks/</guid><description>Join us for the Christmas Edition of the .hidden seminar! If you wish to give a short talk on a technical subject of your choosing, send us a message. It can be as short as you like (even 1 minute), and as long as 20 minutes. Complexity does not matter and it doesn&amp;rsquo;t have to be security related.
Title Speaker Place Datetime Slides Companies hate me for presenting this amazing idea MettleSphee Room 512 @ PBT 17 Dec 2025 18:00 Link Securing your Router sunbather Room 512 @ PBT 17 Dec 2025 18:00 Link Indie Web - Quickstart Guide mehanix Room 512 @ PBT 17 Dec 2025 18:00 Link When you’re a hammer, Everything looks like a nail Mega Room 512 @ PBT 17 Dec 2025 18:00 Link</description></item><item><title>Squid Game Engagement Report</title><link>https://dothidden.xyz/ctfs/ctf-usv_2025/squidgame/</link><pubDate>Thu, 27 Nov 2025 23:00:00 +0300</pubDate><guid>https://dothidden.xyz/ctfs/ctf-usv_2025/squidgame/</guid><description>Summary The engagement targeted a multi-service CTF environment that emulates the &amp;ldquo;Squid Game&amp;rdquo; infrastructure. Four main services (ports 8080, 8081, 8082, and 3000) plus auxiliary binaries were assessed. Critical issues were identified in every reachable component: insecure file upload logic, server-side template injection, JWT handling flaws, SQL injection, and weak protection of a native mobile secret.
Attack Surface Overview Port Service / Purpose Notes 8080 PHP &amp;ldquo;Game board&amp;rdquo; Vulnerable to SSTI, exposes DB creds 8081 VIP/Admin portal Authenticated file uploads with predictable names 8082 Blood Cross (React + Spring Boot) JWT-based backend with SQLi 3000 VIP messaging API Protected by bearer token embedded inside VIPs.</description></item><item><title>Seminar 0x0C</title><link>https://dothidden.xyz/events/seminar_0x0c/</link><pubDate>Wed, 26 Nov 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x0c/</guid><description> Title Speaker Place Datetime Slides When Functionality Becomes a Backdoor: Remote Code Execution in OT Environments Dragos Ionica Amf. 703 @ PBT 26 Nov 2025 18:00 TBA</description></item><item><title>Seminar 0x0B</title><link>https://dothidden.xyz/events/seminar_0x0b/</link><pubDate>Wed, 29 Oct 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x0b/</guid><description> Title Speaker Place Datetime Slides Fantastic CVEs and Where to Find Them Mal Amf. Titeica @ PBT 29 Oct 2025 18:00 TBA</description></item><item><title>1.Drill_Baby_Drill!</title><link>https://dothidden.xyz/ctfs/flareon12_2025/1-drill_baby_drill/</link><pubDate>Wed, 01 Oct 2025 18:42:50 +0200</pubDate><guid>https://dothidden.xyz/ctfs/flareon12_2025/1-drill_baby_drill/</guid><description>The first challenge in Flare-On starts with a game where the source code is provided.
This game is written in PyGame. It is about a baby trying to drill to recover its lost teddy bears. The source code is provided, along with a runnable PyInstaller EXE file.
When running the game, we can see that we control a baby who can move horizontally and drill downward. If we hit a rock with the drill, it&amp;rsquo;s game over.</description></item><item><title>2.project_chimera</title><link>https://dothidden.xyz/ctfs/flareon12_2025/2-project_chimera/</link><pubDate>Wed, 01 Oct 2025 18:42:50 +0200</pubDate><guid>https://dothidden.xyz/ctfs/flareon12_2025/2-project_chimera/</guid><description>For the second challenge we receive a python file only. The file is pretty small:
# These are my encrypted instructions for the Sequencer. encrypted_sequencer_data = b&amp;#39;x\x9cm\x96K\xcf\xe2\xe6\x15.....&amp;#39; # this is longer print(f&amp;#34;Booting up {f&amp;#34;Project Chimera&amp;#34;} from Dr. Khem&amp;#39;s journal...&amp;#34;) # apperently this exists to indicate that a version of Python 3.12+ should be used, I didn&amp;#39;t have this issue though # Activate the Genetic Sequencer. From here, the process is automated.</description></item><item><title>3.pretty_devilish_file</title><link>https://dothidden.xyz/ctfs/flareon12_2025/3-pretty_devilish_file/</link><pubDate>Wed, 01 Oct 2025 18:42:50 +0200</pubDate><guid>https://dothidden.xyz/ctfs/flareon12_2025/3-pretty_devilish_file/</guid><description>I didn&amp;rsquo;t really enjoy this challenge since it was pretty guessy. In this challenge we only receive a PDF file. To analyse it I used pdf-parser.py and pdfid.py.
By running pdfid.py we get the information that the pdf has an encrypted section. I initially thought that this was the goal of the challenge but after spending quite some time to understand how that section works I gave up since I couldn&amp;rsquo;t extract anything usefull from it.</description></item><item><title>4.UnholyDragon</title><link>https://dothidden.xyz/ctfs/flareon12_2025/4-unholydragon/</link><pubDate>Wed, 01 Oct 2025 18:42:50 +0200</pubDate><guid>https://dothidden.xyz/ctfs/flareon12_2025/4-unholydragon/</guid><description>Cheese For this challenge we get a Windows executable (UnholyDragon-150.exe).
The first thing we can observe is that the header is malformed (the first byte is incorrect).
This is easily fixed in a hex editor (I used HxD) by changing the first byte to 0x4D (M).
We can also use Detect It Easy to analyze the binary.
After patching the executable, I decided to do some dynamic analysis with Procmon first.</description></item><item><title>5.ntfsm</title><link>https://dothidden.xyz/ctfs/flareon12_2025/5-ntfsm/</link><pubDate>Wed, 01 Oct 2025 18:42:50 +0200</pubDate><guid>https://dothidden.xyz/ctfs/flareon12_2025/5-ntfsm/</guid><description>We get a really big Windows executable in this challenge.
It&amp;rsquo;s most likely this big because of the jump table:
Initially I found it pretty difficult to RE statically altough dynamic analysis definitely helped a lot.
Through dynamic analysis you can see that the binary writes to some ADS streams (hence the ntfs from the challenge name). These are:
state : represents the index in the jump table. It specifies which branch to jump to.</description></item><item><title>6.chain_of_demands</title><link>https://dothidden.xyz/ctfs/flareon12_2025/6-chain_of_demands/</link><pubDate>Wed, 01 Oct 2025 18:42:50 +0200</pubDate><guid>https://dothidden.xyz/ctfs/flareon12_2025/6-chain_of_demands/</guid><description>While I didn&amp;rsquo;t solve this challenge, I feel I was pretty close but got sidetracked down a rabbit hole.
For this challenge we get a Linux executable. When running it we get a console application that acts as a chat client.
The most important part of this is that we have a Last Convo button which displays the following:
[ { &amp;#34;conversation_time&amp;#34;: 0, &amp;#34;mode&amp;#34;: &amp;#34;LCG-XOR&amp;#34;, &amp;#34;plaintext&amp;#34;: &amp;#34;Hello&amp;#34;, &amp;#34;ciphertext&amp;#34;: &amp;#34;e934b27119f12318fe16e8cd1c1678fd3b0a752eca163a7261a7e2510184bbe9&amp;#34; }, { &amp;#34;conversation_time&amp;#34;: 4, &amp;#34;mode&amp;#34;: &amp;#34;LCG-XOR&amp;#34;, &amp;#34;plaintext&amp;#34;: &amp;#34;How are you?</description></item><item><title>Seminar 0x0A</title><link>https://dothidden.xyz/events/seminar_0x0a/</link><pubDate>Wed, 24 Sep 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x0a/</guid><description> Title Speaker Place Datetime Slides Nostalgic times in modern days: A short visit from the ghost of technology’s past MettleSphee Amf Pompeiu @ PBT 24 Sep 2025 18:00 Link</description></item><item><title>Flag L3ak</title><link>https://dothidden.xyz/ctfs/l3akctf_2025/flag_l3ak/</link><pubDate>Mon, 14 Jul 2025 21:45:51 +0300</pubDate><guid>https://dothidden.xyz/ctfs/l3akctf_2025/flag_l3ak/</guid><description>Challenge Description What&amp;rsquo;s the name of this CTF? Yk what to do 😉
We are greeted by a blog page, with a search bar and a few posts.
One post in particular, titled &amp;ldquo;Not the flag?&amp;rdquo; claims to have the flag hidden inside it.
Intuition Looking at the code we see it is an expressjs application, with public pages and 2 endpoints of interest:\
'/api/search' '/api/posts' Search is of particular interest for us because the lookup happens before the flag gets overwritten.</description></item><item><title>Safe Gets</title><link>https://dothidden.xyz/ctfs/l3akctf_2025/safe_gets/</link><pubDate>Mon, 14 Jul 2025 21:42:41 +0300</pubDate><guid>https://dothidden.xyz/ctfs/l3akctf_2025/safe_gets/</guid><description>Challenge Description I think I found a way to make gets safe.
Intuition If we take a look at it with Ghidra
004011a5 48 8d 85 LEA RAX=&amp;gt;local_118,[RBP + -0x110] f0 fe ff ff 004011ac 48 89 c7 MOV RDI,RAX 004011af b8 00 00 MOV EAX,0x0 00 00 004011b4 e8 e7 fe CALL FUN_004010a0 undefined FUN_004010a0() ff ff Where FUN_004010a0 is just gets, we are given the entry point for a ROP exploit.</description></item><item><title>The Goose</title><link>https://dothidden.xyz/ctfs/l3akctf_2025/the_goose/</link><pubDate>Mon, 14 Jul 2025 21:39:11 +0300</pubDate><guid>https://dothidden.xyz/ctfs/l3akctf_2025/the_goose/</guid><description>Challenge Description When the honking gets tough, you better brush up on your basics
We are greeted by a goose, that asks us to guess a number. If we guess correctly we get to write a message to the world.
Intuition The protections enabled on the binary tell us that we probably are expected to execute a shell payload from the stack.
RELRO: Partial RELRO Stack: No canary found NX: NX unknown - GNU_STACK missing PIE: PIE enabled Stack: Executable RWX: Has RWX segments Stripped: No Solution Sifting through the code with Ghidra we see that highscore is an interesting function</description></item><item><title>Seminar 0x09</title><link>https://dothidden.xyz/events/seminar_0x09/</link><pubDate>Wed, 25 Jun 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x09/</guid><description> Title Speaker Place Datetime Slides From Payload to Payback: Dissecting and Deceiving C2 Infrastructures Levi Amf Pompeiu @ FMI 25 Jun 2025 18:00 N/A</description></item><item><title>Seminar 0x08</title><link>https://dothidden.xyz/events/seminar_0x08/</link><pubDate>Wed, 28 May 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x08/</guid><description> Title Speaker Place Datetime Slides Recovering Lost Media - Tools, Techniques, and a Personal Case Study Johnson Amf Pompeiu @ FMI 28 May 2025 18:00 Link Finding Backdoors in Android Apps: Chinese Edition sunbather Amf Pompeiu @ FMI 28 May 2025 18:00 Link</description></item><item><title>Seminar 0x07</title><link>https://dothidden.xyz/events/seminar_0x07/</link><pubDate>Wed, 30 Apr 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x07/</guid><description> Title Speaker Place Datetime Slides Bad Binder - Exploiting an Android Kernel Vulnerability zenbassi Amf Pompeiu @ FMI 30 Apr 2025 18:00 N/A</description></item><item><title>Notecard</title><link>https://dothidden.xyz/ctfs/swamp_ctf_2025/notecard/</link><pubDate>Sun, 30 Mar 2025 23:02:58 +0300</pubDate><guid>https://dothidden.xyz/ctfs/swamp_ctf_2025/notecard/</guid><description>Challenge Description I wrote a service that allows students to create and retrieve their own notecards! What do you think?
Intuition The program is basically a note taking program. Here is the main() function:
undefined8 main(void) { long lVar1; undefined8 uVar2; long in_FS_OFFSET; lVar1 = *(long *)(in_FS_OFFSET + 0x28); setbuf(_stdin,(char *)0x0); setbuf(_stdout,(char *)0x0); printf(&amp;#34;Welcome to Note! Your one stop shop for all notecard needs!\n&amp;#34;); uVar2 = alloc(); FUN_001013f0(uVar2); if (*(long *)(in_FS_OFFSET + 0x28) == lVar1) { return 0; } __stack_chk_fail(); } Firstly, the alloc() function allocates some memory on the heap for the notes.</description></item><item><title>Oh My Buffer</title><link>https://dothidden.xyz/ctfs/swamp_ctf_2025/oh_my_buffer/</link><pubDate>Sun, 30 Mar 2025 22:47:05 +0300</pubDate><guid>https://dothidden.xyz/ctfs/swamp_ctf_2025/oh_my_buffer/</guid><description>Challenge Description I may have messed up my I/O calls, but it doesn&amp;rsquo;t matter if everything sensitive has been erased, right?
Intuition Open the binary in Ghidra:
void main(void) { int fd_devnull; __pid_t _Var1; int tmp; int tmp2; int tmp3; long in_FS_OFFSET; char local_71; int fd_stdout; int opt; FILE *local_68; FILE *devnull; char flag [72]; undefined8 local_10; local_10 = *(undefined8 *)(in_FS_OFFSET + 0x28); local_68 = fopen(&amp;#34;flag.txt&amp;#34;,&amp;#34;r&amp;#34;); fgets(flag,0x40,local_68); fclose(local_68); devnull = fopen(&amp;#34;/dev/null&amp;#34;,&amp;#34;w&amp;#34;); fd_stdout = dup(1); fd_devnull = fileno(devnull); dup2(fd_devnull,1); puts(&amp;#34;Here\&amp;#39;s the flag, too bad we don\&amp;#39;t let you see this:&amp;#34;); fflush(stdout); fputs(flag,stdout); memset(flag,0,0x40); dup2(fd_stdout,1); close(fd_stdout); fclose(devnull); _Var1 = fork(); if (_Var1 == 0) { while( true ) { do { while( true ) { write(1,&amp;#34;===================\n&amp;#34;,0x14); write(1,&amp;#34;Welcome to the box!</description></item><item><title>Tinybrain</title><link>https://dothidden.xyz/ctfs/swamp_ctf_2025/tinybrain/</link><pubDate>Sun, 30 Mar 2025 18:09:17 +0300</pubDate><guid>https://dothidden.xyz/ctfs/swamp_ctf_2025/tinybrain/</guid><description>Challenge Description Optimized for the minimum footprint&amp;hellip; if you ignore the jump tables&amp;hellip;
Note: bf should be called with a file. The remote runs a script that is not provided, of which makes a file from your input.
Intuition We&amp;rsquo;re given a brainfuck interpreter that takes interprets the program found in the filename passed as its first argument. Let&amp;rsquo;s look at it dynamically:
$ gdb --args bf payload pwndbg&amp;gt; start 0x401000 lea r13, [0x403800] R13 =&amp;gt; 0x403800 ◂— 0 0x401008 xor r14, r14 R14 =&amp;gt; 0 0x40100b mov rdi, qword ptr [rsp + 0x10] RDI, [0x7fffffffdef0] =&amp;gt; 0x7fffffffe270 ◂— 0x64616f6c796170 /* &amp;#39;payload&amp;#39; */ 0x401010 mov eax, 2 EAX =&amp;gt; 2 0x401015 xor esi, esi ESI =&amp;gt; 0 0x401017 xor edx, edx EDX =&amp;gt; 0 0x401019 syscall &amp;lt;SYS_open&amp;gt; 0x40101b mov r12, rax 0x40101e call 0x40102a &amp;lt;0x40102a&amp;gt; 0x401023 jmp qword ptr [rax*8 + 0x402000] 0x40102a inc r14 We can see that the our file &amp;ldquo;payload&amp;rdquo; is opened through the open() syscall.</description></item><item><title>Greeting as a Service</title><link>https://dothidden.xyz/ctfs/swamp_ctf_2025/greeting_as_a_service/</link><pubDate>Sun, 30 Mar 2025 17:34:37 +0300</pubDate><guid>https://dothidden.xyz/ctfs/swamp_ctf_2025/greeting_as_a_service/</guid><description>Challenge Description A friend of mine set up a greeting as a service server. He gave me a core dump of it to play around with but won&amp;rsquo;t give me source. Find anything useful?
Intuition We get a coredump of the remote service. A coredump can&amp;rsquo;t be explored by executing instructions, but the memory can be examined. Based on the backtrace, I guess we are in some kind of main() function:</description></item><item><title>Tales for the Brave</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/tales_for_the_brave/</link><pubDate>Sat, 29 Mar 2025 20:52:57 +0200</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/tales_for_the_brave/</guid><description>Challenge Description In Eldoria, a once-innocent website called “Tales for the Brave” has become the focus of unsettling rumors. Some claim it may secretly trap unsuspecting visitors, leading them into a complex phishing scheme. Investigators report signs of encrypted communications and stealthy data collection beneath its friendly exterior. You must uncover the truth, and protect Eldoria from a growing threat. When debugging JavaScript, ensure you use a Firefox-based browser.</description></item><item><title>Contractor</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/contractor/</link><pubDate>Sat, 29 Mar 2025 20:14:26 +0200</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/contractor/</guid><description>Challenge Description Sir Alaric calls upon the bravest adventurers to join him in assembling the mightiest army in all of Eldoria. Together, you will safeguard the peace across the villages under his protection. Do you have the courage to answer the call?
Intuition Decompiled main is shown in the following listing:
undefined8 main(void) { undefined8 uVar1; char *pcVar2; int iVar3; char *pcVar4; int *piVar5; long in_FS_OFFSET; int choice; int local_24; char *local_20; char local_14 [4]; long cookie; cookie = *(long *)(in_FS_OFFSET + 0x28); for (piVar5 = &amp;amp;choice; piVar5 !</description></item><item><title>Crossbow</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/crossbow/</link><pubDate>Sat, 29 Mar 2025 19:09:45 +0200</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/crossbow/</guid><description>Challenge Description Sir Alaric&amp;rsquo;s legendary shot can pierce through any enemy! Join his training and hone your aim to match his unparalleled precision.
Intuition The following is the decompiled code for the training() and the target_dummy() functions, which are the vulnerable functions:
void training(void) { char *local_28 [4]; printf(&amp;#34;%s\n[%sSir Alaric%s]: You only have 1 shot, don\&amp;#39;t miss!!\n&amp;#34;,&amp;amp;DAT_0040b4a8,&amp;amp;DAT_0040b00e, &amp;amp;DAT_0040b4a8); target_dummy(local_28); printf(&amp;#34;%s\n[%sSir Alaric%s]: That was quite a shot!!\n\n&amp;#34;,&amp;amp;DAT_0040b4a8,&amp;amp;DAT_0040b00e, &amp;amp;DAT_0040b4a8); return; } void target_dummy(char **param_1) { int iVar1; long lVar2; char *pcVar3; int input; printf(&amp;#34;%s\n[%sSir Alaric%s]: Select target to shoot: &amp;#34;,&amp;amp;DAT_0040b4a8,&amp;amp;DAT_0040b00e,&amp;amp;DAT_0040b4a8); iVar1 = scanf(&amp;#34;%d%*c&amp;#34;,&amp;amp;input); if (iVar1 !</description></item><item><title>Laconic</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/laconic/</link><pubDate>Sat, 29 Mar 2025 18:36:19 +0200</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/laconic/</guid><description>Challenge Description Sir Alaric&amp;rsquo;s struggles have plunged him into a deep and overwhelming sadness, leaving him unwilling to speak to anyone. Can you find a way to lift his spirits and bring back his courage?
Intuition Super small binary, written directly in assembly. Here is the disassembly:
$ objdump -d laconic -M intel laconic: file format elf64-x86-64 Disassembly of section .shellcode: 0000000000043000 &amp;lt;__start&amp;gt;: 43000: 48 c7 c7 00 00 00 00 mov rdi,0x0 43007: 48 89 e6 mov rsi,rsp 4300a: 48 83 ee 08 sub rsi,0x8 4300e: 48 c7 c2 06 01 00 00 mov rdx,0x106 43015: 0f 05 syscall 43017: c3 ret 43018: 58 pop rax 43019: c3 ret The syscall instruction is executing a read (rax = 0x0, you can see it dynamically).</description></item><item><title>Quack Quack</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/quack_quack/</link><pubDate>Sat, 29 Mar 2025 18:19:13 +0200</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/quack_quack/</guid><description>Challenge Description On the quest to reclaim the Dragon&amp;rsquo;s Heart, the wicked Lord Malakar has cursed the villagers, turning them into ducks! Join Sir Alaric in finding a way to defeat them without causing harm. Quack Quack, it&amp;rsquo;s time to face the Duck!
Intuition We can open the binary in Ghidra and see that the main() function calls an interesting duckling() function. Here is the latter&amp;rsquo;s decompiled code, comments added by me:</description></item><item><title>Twin Oracles</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/twin_oracles/</link><pubDate>Thu, 27 Mar 2025 19:00:25 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/twin_oracles/</guid><description>Challenge Description A powerful artifact—meant to generate chaos yet uphold order—has revealed its flaw. A misplaced rune, an unintended pattern, an oversight in the design. The one who understands the rhythm of its magic may predict its every move and use it against its creators. Will you be the one to claim its secrets?
Intuition We are given this file (server.py):
from Crypto.Util.number import * FLAG = bytes_to_long(open(&amp;#39;flag.txt&amp;#39;, &amp;#39;rb&amp;#39;).read()) MENU = &amp;#39;&amp;#39;&amp;#39; The Seers await your command: 1.</description></item><item><title>Hourcle</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/hourcle/</link><pubDate>Thu, 27 Mar 2025 18:33:57 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/hourcle/</guid><description>Challenge Description A powerful enchantment meant to obscure has been carelessly repurposed, revealing more than it conceals. A fool sought security, yet created an opening for those who dare to peer beyond the illusion. Can you exploit the very spell meant to guard its secrets and twist it to your will?
Intuition We are given this file (server.py):
from Crypto.Cipher import AES from Crypto.Util.Padding import pad import os, string, random, re KEY = os.</description></item><item><title>Prelim</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/prelim/</link><pubDate>Thu, 27 Mar 2025 17:57:30 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/prelim/</guid><description>Challenge Description Cedric has now found yet another secret message, but he dropped it on the floor and it got all scrambled! Do you think you can find a way to undo it?
Intuition We are given 2 files:
souce.py:
from random import shuffle from hashlib import sha256 from Crypto.Cipher import AES from Crypto.Util.Padding import pad n = 0x1337 e = 0x10001 def scramble(a, b): return [b[a[i]] for i in range(n)] def super_scramble(a, e): b = list(range(n)) while e: if e &amp;amp; 1: b = scramble(b, a) a = scramble(a, a) e &amp;gt;&amp;gt;= 1 return b message = list(range(n)) shuffle(message) scrambled_message = super_scramble(message, e) flag = pad(open(&amp;#39;flag.</description></item><item><title>Traces</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/traces/</link><pubDate>Thu, 27 Mar 2025 16:12:33 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/traces/</guid><description>Challenge Description Long ago, a sacred message was sealed away, its meaning obscured by the overlapping echoes of its own magic. The careless work of an enchanter has left behind a flaw—a weakness hidden within repetition. With keen eyes and sharper wits, can you untangle the whispers of the past and restore the lost words?
Intuition We are provided with this python file (server.py):
from db import * from Crypto.</description></item><item><title>Kewiri</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/kewiri/</link><pubDate>Thu, 27 Mar 2025 14:28:56 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/kewiri/</guid><description>Disclaimer: I am not a math pro or something. In this writeup I will make a lot of assumptions. I do not understand most of them myself, they are a result of me talking to LLMs and putting my trust into them.
Challenge Description The Grand Scholars of Eldoria have prepared a series of trials, each testing the depth of your understanding of the ancient mathematical arts. Those who answer wisely shall be granted insight, while the unworthy shall be cast into the void of ignorance.</description></item><item><title>Seminar 0x06</title><link>https://dothidden.xyz/events/seminar_0x06/</link><pubDate>Wed, 26 Mar 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x06/</guid><description> Title Speaker Place Datetime Slides WTF is a Heap? And how to hack it! PineBel Amf Pompeiu @ FMI 26 Mar 2025 18:00 Link</description></item><item><title>Blessing</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/blessing/</link><pubDate>Wed, 26 Mar 2025 03:00:19 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/blessing/</guid><description>Challenge Description In the realm of Eldoria, where warriors roam, the Dragon&amp;rsquo;s Heart they seek, from bytes to byte&amp;rsquo;s home. Through exploits and tricks, they boldly dare, to conquer Eldoria, with skill and flair.
Intuition We get a binary that does a malloc of 0x30000. After the malloc it sets the first byte from that malloc to 1. We also get the pointer from malloc as a leak. To read the flag we need to overwrite the 1 to 0.</description></item><item><title>Strategist</title><link>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/strategist/</link><pubDate>Wed, 26 Mar 2025 00:00:19 +0300</pubDate><guid>https://dothidden.xyz/ctfs/cyber_apocalypse_ctf_2025/strategist/</guid><description>Challenge description To move forward, Sir Alaric requests each member of his team to present their most effective planning strategy. The individual with the strongest plan will be appointed as the Strategist for the upcoming war. Put forth your best effort to claim the role of Strategist!
Intuition It looks like a classic heap challenge. We can control the size of malloc and write to that chunk. We can also remove (free) that chunk and edit its contents.</description></item><item><title>Very Serious Cryptography</title><link>https://dothidden.xyz/ctfs/kalmarctf_2025/very_serious_cryptography/</link><pubDate>Mon, 10 Mar 2025 03:15:35 +0300</pubDate><guid>https://dothidden.xyz/ctfs/kalmarctf_2025/very_serious_cryptography/</guid><description>This writeup is just a better explanation of this one. Make sure to check it too!
Challenge Description As CTF becomes more mainstream, a troubling new trend is emerging of player fanclubs becoming so large that top players and challenge authors are having their lives disrupted from the sheer volume of valentines gifts they are receiving! With some instances of the extreme valentines pressure even leading to the last minute postponement of major CTFs!</description></item><item><title>babyKalmarCTF</title><link>https://dothidden.xyz/ctfs/kalmarctf_2025/babykalmarctf/</link><pubDate>Mon, 10 Mar 2025 03:10:19 +0300</pubDate><guid>https://dothidden.xyz/ctfs/kalmarctf_2025/babykalmarctf/</guid><description>Challenge Description Ever played a CTF inside a CTF?
We were looking for a new scoring algorithm which would both reward top teams for solving super hard challenges, but also ensure that the easiest challenges wouldn&amp;rsquo;t go to minimum straight away if more people played than we expected.
Thats when we came across this ingenious suggestion! https://github.com/sigpwny/ctfd-dynamic-challenges-mod/issues/1
We&amp;rsquo;ve implemented it this scoring idea(see here: https://github.com/blatchley/ctfd-dynamic-challenges-mod ) and spun up a small test ctf to test it out.</description></item><item><title>RWX-Gold</title><link>https://dothidden.xyz/ctfs/kalmarctf_2025/rwx-gold/</link><pubDate>Mon, 10 Mar 2025 03:03:41 +0300</pubDate><guid>https://dothidden.xyz/ctfs/kalmarctf_2025/rwx-gold/</guid><description>Challenge Description We give you file read, file write and code execution. But can you get the flag? Let&amp;rsquo;s reduce that.
Intuition Since the challenge lets us execute a command with 3 characters we cannot directly execute /would, so we need to find something that can execute commands for as. This is gpg.
Solution Step 1 - create the .gnupg directory First we need to execute gpg to create the directory ~/.</description></item><item><title>RWX-Silver</title><link>https://dothidden.xyz/ctfs/kalmarctf_2025/rwx-silver/</link><pubDate>Mon, 10 Mar 2025 03:00:19 +0300</pubDate><guid>https://dothidden.xyz/ctfs/kalmarctf_2025/rwx-silver/</guid><description>Challenge Description We give you file read, file write and code execution. But can you get the flag? Apparently that was too much!
Intuition The challenge is similar to RWX-Bronze, but now the length of the command is 5 characters. I used the same idea, but wrote the script into the home directory.
Solution Write the script:
POST /write?filename=/home/user/a HTTP/2 #!/bin/sh /would you be so kind to provide me with a flag Execute the command: .</description></item><item><title>RWX-Bronze</title><link>https://dothidden.xyz/ctfs/kalmarctf_2025/rwx-bronze/</link><pubDate>Mon, 10 Mar 2025 02:48:43 +0300</pubDate><guid>https://dothidden.xyz/ctfs/kalmarctf_2025/rwx-bronze/</guid><description>Challenge Description We give you file read, file write and code execution. But can you get the flag? Let&amp;rsquo;s start out gently.
NOTE: If you get a 404 error, try using one of the endpoints described in the handout!
Intuition The challenge lets us execute commands of length 7, so we cannot execute /would with the necessary argument. My first attempt was to create a script file and run it with a command.</description></item><item><title>SecurityInFront</title><link>https://dothidden.xyz/ctfs/htb_university_2024/securityinfront/</link><pubDate>Fri, 28 Feb 2025 12:33:22 +0200</pubDate><guid>https://dothidden.xyz/ctfs/htb_university_2024/securityinfront/</guid><description>Intuition We are given a single index.html file. Opening it we are greeted with a login page.
Viewing the page source, we see a very interesting Javascript function, checkCredentials(). It seems to be obfuscated, so we can run it through a deobfuscator.
async function checkCredentials() { var t = document.getElementById(&amp;#39;access-user&amp;#39;).value, r = document.getElementById(&amp;#39;access-code&amp;#39;).value c1 = &amp;#39;NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm&amp;#39; c2 = &amp;#39;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&amp;#39; n1 = [5, 6, 7, 8, 9, 0, 1, 2, 3, 4] n2 = &amp;#39;0123456789&amp;#39; var n = (e, t, r) =&amp;gt; e.</description></item><item><title>Seminar 0x05</title><link>https://dothidden.xyz/events/seminar_0x05/</link><pubDate>Wed, 26 Feb 2025 18:30:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x05/</guid><description> Title Speaker Place Datetime Slides uefi-rs - The story of a low-level Rust library Gabi Majeri Amf Pompeiu @ FMI 26 Feb 2025 18:30 Link What is Remote Attestation? An introduction Honesty Amf Pompeiu @ FMI 26 Feb 2025 18:30 Link</description></item><item><title>Seminar 0x04</title><link>https://dothidden.xyz/events/seminar_0x04/</link><pubDate>Wed, 29 Jan 2025 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x04/</guid><description> Title Speaker Place Datetime Slides The modern boot process zenbassi Amf Pompeiu @ FMI 29 Jan 2025 18:00 N/A EXAPUNKS overview sunbather Amf Pompeiu @ FMI 29 Jan 2025 18:00 N/A</description></item><item><title>MuTLock</title><link>https://dothidden.xyz/ctfs/htb_university_2024/mutlock/</link><pubDate>Sun, 22 Dec 2024 12:53:45 +0200</pubDate><guid>https://dothidden.xyz/ctfs/htb_university_2024/mutlock/</guid><description>Challenge Description The Frontier Board encrypts their secrets using a system tied to the ever-shifting cosmic cycles, woven with patterns that seem random to the untrained eye. To outwit their defenses, you&amp;rsquo;ll need to decipher the hidden rhythm of time and unlock the truth buried in their encoded transmissions. Can you crack the code and unveil their schemes?
We are given the Python source code for a custom cipher used to encode the secret flag, as well as an output.</description></item><item><title>Seminar 0x03 (Lightning Talks)</title><link>https://dothidden.xyz/events/seminar_0x03_lightning_talks/</link><pubDate>Wed, 18 Dec 2024 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x03_lightning_talks/</guid><description> Title Speaker Place Datetime Slides DNS Tunneling h3pha Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link ROP Techniques sunbather Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link OpenWRT &amp;amp; PostmarketOS MettleSphee Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link Function Hooking zenbassi Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link Binary Patching PineBel Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link How I lost all my data Mircea Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link Ping Pong Tracker Sebi Amf Pompeiu @ FMI 18 Dec 2024 18:00 Link</description></item><item><title>Seminar 0x02</title><link>https://dothidden.xyz/events/seminar_0x02/</link><pubDate>Wed, 27 Nov 2024 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x02/</guid><description> Title Speaker Place Datetime Slides Reverse Engineering Obfuscated Applications with Symbolic Execution zenbassi Amf Pompeiu @ FMI 27 Nov 2024 18:00 N/A</description></item><item><title>The Thirty-Twodle Challenge</title><link>https://dothidden.xyz/ctfs/hackthevote_2024/the-thirty-twodle-challenge/</link><pubDate>Wed, 06 Nov 2024 22:20:02 +0300</pubDate><guid>https://dothidden.xyz/ctfs/hackthevote_2024/the-thirty-twodle-challenge/</guid><description>Challenge Description We found the source of our opponent&amp;rsquo;s fake news generator, but our crack team of interns got side tracked playing the -dles! Can you crack this disinformation machine and help us predict their each and every future story?
Intuition This write-up is going to be less of a technical one because I (MettleSphee) took a weird approach: I like thinking about how games would work technically by looking at how they behave.</description></item><item><title>Seminar 0x01</title><link>https://dothidden.xyz/events/seminar_0x01/</link><pubDate>Wed, 30 Oct 2024 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/seminar_0x01/</guid><description> Title Speaker Place Datetime Slides Intel CET Overview and Exploit Techniques sunbather Amf Pompeiu @ FMI 30 Oct 2024 18:00 Link</description></item><item><title>OSCTF LAN Party</title><link>https://dothidden.xyz/events/osctf_lan_party/</link><pubDate>Sat, 13 Jul 2024 10:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/osctf_lan_party/</guid><description>Date &amp;amp; Time: 10:00, 13 Jul 2024 Location: Google Room @ FMI
Join us to play OSCTF. We’ll be waiting for you at the University of Bucharest. We’ll play until 19:30 and then share solutions for the challenges.
We welcome and encourage any beginner to join us. There are a lot of confirmed people coming that are very new to it.
We’d appreciate a DM or email if you wish to come.</description></item><item><title>bbsqli</title><link>https://dothidden.xyz/ctfs/l3akctf_2024/bbsqli/</link><pubDate>Mon, 27 May 2024 14:51:02 +0300</pubDate><guid>https://dothidden.xyz/ctfs/l3akctf_2024/bbsqli/</guid><description>Challenge Description SO Classic !
Intuition Automated tools like sqlmap or bruteforcing are not allowed for this challenge.
This challange involves a flask application where the login function does not use a prepared statement and it uses a raw query, vulnerable to sql injection. For now, this looks like an easy sql injection challange, but the twist is this code section:
if user and user[&amp;#39;username&amp;#39;] == username and user[&amp;#39;password&amp;#39;] == hash_password(password): session[&amp;#39;username&amp;#39;] = user[&amp;#39;username&amp;#39;] session[&amp;#39;email&amp;#39;] = user[&amp;#39;email&amp;#39;] return redirect(url_for(&amp;#39;dashboard&amp;#39;)) Where it checks if the username of the user found is the same as the username we submitted in the form, so if we just send the payload as username value, it will not match.</description></item><item><title>simple calculator</title><link>https://dothidden.xyz/ctfs/l3akctf_2024/simple_calculator/</link><pubDate>Mon, 27 May 2024 14:51:02 +0300</pubDate><guid>https://dothidden.xyz/ctfs/l3akctf_2024/simple_calculator/</guid><description>Challenge Description Unveil PHP Secrets.
Intuition The challenge involves a PHP script that evaluates mathematical expressions from a URL parameter. The script has input validation using a regex to prevent the use of alphabetic characters and quotes. By leveraging PHP&amp;rsquo;s handling of heredoc syntax and octal encoding, we can craft an input that bypasses these restrictions and executes the desired command to retrieve the flag.
Solution Octal characters
If a string is enclosed in double quotes (or heredocs), PHP will interpret octal characters as regular characters.</description></item><item><title>yet another guessing game</title><link>https://dothidden.xyz/ctfs/openecsc_2nd_round_2024/yet_another_guessing_game/</link><pubDate>Fri, 10 May 2024 16:37:39 +0300</pubDate><guid>https://dothidden.xyz/ctfs/openecsc_2nd_round_2024/yet_another_guessing_game/</guid><description>Challenge Description The title says it all. Guess the secret!
nc yetanotherguessinggame.challs.open.ecsc2024.it 38010
Intuition We&amp;rsquo;re dealing with a very simple binary with all protections enabled:
RELRO STACK CANARY NX PIE Full RELRO Canary found NX enabled PIE enabled Reversing it doesn&amp;rsquo;t take too long. It first opens /dev/urandom and reads 16 bytes of random data into a buffer. After that it runs a multi-step loop. Inside the loop, the player is asked to guess the random value, and the input is checked against the random value with memcmp.</description></item><item><title>fpfc</title><link>https://dothidden.xyz/ctfs/openecsc_2nd_round_2024/fpfc/</link><pubDate>Thu, 09 May 2024 13:40:50 +0300</pubDate><guid>https://dothidden.xyz/ctfs/openecsc_2nd_round_2024/fpfc/</guid><description>Challenge Description Behold the newest technology! Our floating point flag checker will surely block all hackers from discovering our flags!
&amp;lt; this is a remote challenge &amp;gt;
Intuition This was such a fun challenge and rather difficult in my opinion. Coming from anti-rev, I tried to angr1 my way through this challenge as well. At the time, I didn&amp;rsquo;t have too much experience with it, so it took me a while to realize that this approach was not really feasible.</description></item><item><title>woauth a laundry</title><link>https://dothidden.xyz/ctfs/openecsc_2nd_round_2024/woauth_a_laundry/</link><pubDate>Thu, 09 May 2024 13:39:57 +0300</pubDate><guid>https://dothidden.xyz/ctfs/openecsc_2nd_round_2024/woauth_a_laundry/</guid><description>Challenge Description Welcome to our innovative business, the only ONE Laundry capable of completely sanitize your clothing by removing 100% of bacteria and viruses.
Flag is in /flag.txt.
Site: http://woauthalaundry.challs.open.ecsc2024.it
Intuition I&amp;rsquo;m not good with web challenges, so I was very proud when I solved this challenge, even though it was one of most solved.
After logging in, I inspected the session storage. There, I immediately noticed an admin entry with the value 0.</description></item><item><title>flavors</title><link>https://dothidden.xyz/ctfs/umdctf_2024/flavors/</link><pubDate>Wed, 08 May 2024 12:53:05 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/flavors/</guid><description>Challenge Description ah, elixirs, the sweet liquid flavor that brings a little spice to my life
desired output is AD38A5970B000E1500041F0B00011617AA85109204082D1485040326051D13012716BF081189AB990E2D0F182CA824
Intuition I&amp;rsquo;m writing this writeup about two weeks after the CTF. Mostly because I was very lazy. As such, you kind reader will have to excuse a few missing details. Now let&amp;rsquo;s start!
What we&amp;rsquo;re dealing with is an erlang byte-code (.beam) file, compiled from Elixir code.
Similar to other languages, the Elixir dev kit comes with an interactive shell called ixe.</description></item><item><title>image abomination</title><link>https://dothidden.xyz/ctfs/umdctf_2024/image_abomination/</link><pubDate>Sun, 28 Apr 2024 23:58:34 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/image_abomination/</guid><description>Challenge Description paul gave his mentat an encrypted thirst trap jpeg bitstream. the mentat was supposed to decrypt and give to chani, but he must&amp;rsquo;ve corrupted it along the way. can you help chani thirst over paul?
Intuition We get a flag.jpg. It&amp;rsquo;s corrupted. Usually you can trivially fix the issues by checking the jpeg format, maybe with help from corkami. This time the issue seems a bit more complicated.</description></item><item><title>mentat-question</title><link>https://dothidden.xyz/ctfs/umdctf_2024/mentat-question/</link><pubDate>Sun, 28 Apr 2024 23:58:34 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/mentat-question/</guid><description>Challenge Description Thufir Hawat is ready to answer any and all questions you have. Unless it&amp;rsquo;s not about division&amp;hellip;
Intuition For this challenge, we receive the source code. I will be attaching it below, in a code box. We can notice multiple interesting things:
We have a win function (secret). We have a buffer overflow when gets(buf) is called in calculate. We have a format string vulnerability when printf(buf) is called in calculate.</description></item><item><title>the_spice</title><link>https://dothidden.xyz/ctfs/umdctf_2024/the_spice/</link><pubDate>Sun, 28 Apr 2024 23:58:34 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/the_spice/</guid><description>Challenge Description House Harkonnen&amp;rsquo;s spice harvesters keep getting overrun by Atreides pwners. Help keep their riches secure using exotic techniques.
Intuition For this challenge, we receive the source code. I will be attaching it below, in a code box. We can notice multiple interesting things:
The prompt is printed with inline assembly, with a syscall (we could use it in ROP). There is a buffer overflow when inputting the buyer&amp;rsquo;s name (but we have stack canaries enabled).</description></item><item><title>typecheck</title><link>https://dothidden.xyz/ctfs/umdctf_2024/typecheck/</link><pubDate>Sun, 28 Apr 2024 23:58:34 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/typecheck/</guid><description>Challenge Description My C++ code won&amp;rsquo;t type check. Can you fix that for me?
Note: you will need to set -ftemplate-depth=10000 when compiling.
Intuition So uh&amp;hellip; apparently C++ templates are turing complete? Yeah this challenge implements a VM in C++ templates. Oh boy&amp;hellip;
Of course, who&amp;rsquo;d wanna reverse a VM written in TEMPLATES? Nobody, that&amp;rsquo;s who. So my initial reaction is to try to reverse the program without reversing the templates.</description></item><item><title>ready-aim-fire</title><link>https://dothidden.xyz/ctfs/umdctf_2024/ready_aim_fire/</link><pubDate>Fri, 26 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/ready_aim_fire/</guid><description>Challenge Description Firing your weapon when the spice harvester&amp;rsquo;s shields are down requires exceptional timing.
Intuition This was a fun challenge which I solved in an unintended way, I will also present the intended solution because it&amp;rsquo;s very interesting. We get the source code (and binary) for this challenge and we can see that we have a BOF in the fire method from the Cannon object and we also have a stack leak.</description></item><item><title>The-voice</title><link>https://dothidden.xyz/ctfs/umdctf_2024/the_voice/</link><pubDate>Fri, 26 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/the_voice/</guid><description>Challenge Description Firing your weapon when the spice harvester&amp;rsquo;s shields are down requires exceptional timing.
Intuition This was an easy pwn challenge. We get the source code but it doesn&amp;rsquo;t hint anything besides an obvious BOF and a give_flag() function. Sadly we have a canary so we are a bit stuck..
If we open the binary in Ghidra we can see that we can actually write over the canary from the stack the value 10191.</description></item><item><title>.hidden days 2024</title><link>https://dothidden.xyz/events/dothidden_days_2024/</link><pubDate>Tue, 23 Apr 2024 18:00:00 +0200</pubDate><guid>https://dothidden.xyz/events/dothidden_days_2024/</guid><description>For our 1 year anniversary we’re hosting a collection of presentations and workshops. We’re calling this event .hidden days. We invite you to join us, in the Faculty of Mathematics and Informatics. The table below will be updated with the schedule for each presentation as we get approval for them.
If you want specific information on a particular presentation or workshop, or if you’re interested in joining us, please contact us directly.</description></item><item><title>Tcache</title><link>https://dothidden.xyz/ctfs/umdctf_2024/tcache/</link><pubDate>Wed, 17 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/umdctf_2024/tcache/</guid><description>Tcache Tcache (per-thread cache) was added in glibc 2.26 to make heap allocation more efficient by allowing each thread to have its own tcache.
Important things to know:
Each thread has 64 singly-linked tcache bins (TCACHE_MAX_BINS). Each bin has a maximum of 7 chunks of the same size. A bin can have chunks ranging from 24 to 1032 bytes (on a 64-bit system). Each bin only has an fd pointer.</description></item><item><title>wicked-firmware</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/wicked-firmware/</link><pubDate>Sun, 14 Apr 2024 23:10:18 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/wicked-firmware/</guid><description>Challenge Description We need some info that is found inside this firmware.
Solution We extract the filesystem of the firmware with binwalk. The flag is comprised of information such as the u-boot version, the extra entry in the hosts file and the admin line from the passwd file.
$ binwalk -e firmware.bin DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 22372 0x5764 U-Boot version string, &amp;#34;U-Boot 1.1.4-g4df6eb16-dirty (Nov 30 2018 - 12:33:02)&amp;#34; ^ this one .</description></item><item><title>krotate</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/krotate/</link><pubDate>Sun, 14 Apr 2024 22:43:54 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/krotate/</guid><description>Challenge Description We managed to intercept communication with a critical mission. We can&amp;rsquo;t decipher it but managed to break into the system and recover what looks like part of the communication and an algorithm for it.
Can you get the full message?
Intuition Analysing the encryption algorithm enables us to make a few interesting and useful observations. Firstly, the cipher-text is obtained by splitting the clear-text into blocks, xoring each block with a key and then joining the xored blocks together.</description></item><item><title>secure-communications</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/secure-communications/</link><pubDate>Sun, 14 Apr 2024 22:17:52 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/secure-communications/</guid><description>Challenge Description We captured some pretty bizzare looking communications, but part of them are encrypted.
Can you help?
Flag Format: CTF{sha256}
Intuition We opened the .pcapng file in Wireshark. Inspecting the packet&amp;rsquo;s hierarchy, we see some packets sent over websocket. Sorting by size we find a TLS Secrets Log File. This can be used to decrypt the communications and find the flag.
Solution The payload of the top 2 packets by size contain the TLS Secrets Log File 1.</description></item><item><title>sat1sf1</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/sat1sf1/</link><pubDate>Sun, 14 Apr 2024 21:39:26 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/sat1sf1/</guid><description>Challenge Description Made my own hashing function sah652.
Here the super-secure hash of my secret: 2033251f4b3161e4455a4c261e3f631e18653c3a6c136e30304037373e6e1f6c6f6448673e686b1e18603d10306d323f3a4b626eee636c3c3c62483592123e6d6c6c3a49ca
Feeling generous to share some hints about my secret that you definitely will not able to recover:
Text length: 69 characters
Flag regex: CTF{[a-f0-9]{64}}
Flag contains somewhere the text: beebeef
Intuition Analysing the implementation we deduce that each byte of the hash is obtained by xoring together some of the bytes which make up the original flag, and potentially some other known values.</description></item><item><title>Wicked-Monitoring</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/wicked-monitoring/</link><pubDate>Sun, 07 Apr 2024 18:00:08 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/wicked-monitoring/</guid><description>Challenge Description Some weird events happened during this week. Please check and provide the necessary info.
Intuition The challenge provides a .evtx file which is a Windows Event Log file. Therefore, I will use the Windows events viewer to analyze the logs. Hopefully the logs are not too big, so, I can easily find suspicious events by scrolling down.
Question 1 Identify the compromised account
Solution 1 I found the following log which uses Putty and SSH and it makes weird commands:</description></item><item><title>harder-assembly</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/harder-assembly/</link><pubDate>Sun, 07 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/harder-assembly/</guid><description>Challenge Description I want the shell, but they want me to work for it, this time even harder :(
Intuition We receive a binary that essentially takes 15 bytes as input, checks if it contains the byte sequence 0x0f05 and then executes the input as shellcode. The sequence 0x0f05 corresponds to syscall. Therefore, we can assume we have 15 bytes to get a shell, but we have to not use syscall as part of our shellcode.</description></item><item><title>heeaap</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/heeaap/</link><pubDate>Sun, 07 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/heeaap/</guid><description>Challenge Description Since strground was &amp;ldquo;too hard&amp;rdquo;&amp;hellip;
Intuition We get a classic, easy heap challenge, with a UAF bug. Two different kind of structures are allocated on the heap, one of 64 bytes and one of 72. From each of them, we control the first 52, respectively 60 bytes. At the end of each, a function pointer for a print function is being assigned. We also have a win function in the binary, that simply calls system(&amp;quot;/bin/sh&amp;quot;).</description></item><item><title>not-allowed</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/not-allowed/</link><pubDate>Sun, 07 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/not-allowed/</guid><description>Challenge Description Silence speaks louder than words.
Intuition We receive a simple binary with two functions: main and wish. The main function sets up stream buffering with setvbufs and then does a call to fgets that is obviously overflowing the destination buffer.
void main(void) { char local_28 [32]; setup(stdin,0,2,0); setup(stdout,0,2,0); setup(stderr,0,2,0); fgets(local_28,600,stdin); return; } Since the stack is NX, our remaining option is to ROP. Sadly we don&amp;rsquo;t have a lot of gadgets, but we do notice a few important ones when dumping with ROPgadget:</description></item><item><title>xfit</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/xfit/</link><pubDate>Sun, 07 Apr 2024 14:23:28 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/xfit/</guid><description>DISCLAIMER This challenge was not solved during the competition, but we were really close of the solution and spend a lot of time on it. We decided to write a writeup to describe our approach and the solution we found after the competition.
Challenge Description Picture this: within the vast expanse of the digital realm, lies a crucial secret vault—a clandestine cache known as cookies. But beware, for these digital treasures are not scattered haphazardly.</description></item><item><title>threat-monitoring</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/threat-monitoring/</link><pubDate>Sun, 07 Apr 2024 14:23:05 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/threat-monitoring/</guid><description>Challenge Description You never thought that this thing was possible, but this morning you have received a request to investigate some malicious events from 2013. What happened more than 10 years ago?
Intuition This is a Kibana search challenge where I have to find different information. Let&amp;rsquo;s open it and first let&amp;rsquo;s filter the logs by adjusting the time range to 2013.
Question 1 Provide the name of the compromised domain</description></item><item><title>just-an-upload</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/just-an-upload/</link><pubDate>Sun, 07 Apr 2024 14:22:29 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/just-an-upload/</guid><description>Challenge Description Our team captured this traffic. Can you find what&amp;rsquo;s in there ?
Intuition We got a pcap file, let&amp;rsquo;s open it with Wireshark and see what&amp;rsquo;s inside. The capture contains a lot of traffic and different protocols. Therefore, let&amp;rsquo;s filter the traffic by protocol. As we can notice below, it seems someone uploaded a zip file under HTTP which is not encrypted. Furthermore, the call is made from /upload.</description></item><item><title>sums-up</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/sums-up/</link><pubDate>Sun, 07 Apr 2024 14:22:19 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/sums-up/</guid><description>Challenge Description Our SOC analysts saw some strange DNS traffic. Wanted you to figure out what was exfiltrated, can you check it and sum it up ?
Intuition Since it is a .pcap let&amp;rsquo;s open using Wireshark,and we notice a lot of DNS requests to different websites. I am used to this kind of challenges and I started to scroll down to search for some patterns since the capture is small.</description></item><item><title>finding-god</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/finding-god/</link><pubDate>Sun, 07 Apr 2024 13:45:05 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/finding-god/</guid><description>Challenge Description Find the name of a place of worship located in Italy, beside water and close to hospital,park and a railroad. We checked on OSM, and there is only one.
Flag format is CTF{sha256(Location Name)}.
EX: CTF{sha256(&amp;ldquo;Parrocchia S. Teresa di Gesù Bambino&amp;rdquo;)}
Intuition Since the challenge mentioned OSM (OpenStreetMap), we knew we had to use OSM queries to find the location. Therefore, our first choice went to overpass-turbo and we started building queries to find the location.</description></item><item><title>profile-pic</title><link>https://dothidden.xyz/ctfs/unbreakable_2024/profile-pic/</link><pubDate>Sun, 07 Apr 2024 12:50:30 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2024/profile-pic/</guid><description>Challenge Description Can you change my profile picture in a hacker way?
Flag format: ctf{sha256sum}
Intuition The website is very simple with an upload feature. It means the attack vector is certainly a file upload vulnerability. The server is PHP because I can add index.php at the end of the home page. We first thought about injecting php code, but we finally looked at XXE upload chaining with the upload feature.</description></item><item><title>52-card-monty</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/52-card-monty/</link><pubDate>Sun, 25 Feb 2024 20:00:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/52-card-monty/</guid><description>Challenge Description: 3-card monty was too easy for me so I made 52-card monty! Can you show me the lady?
Intuition We are given an ELF 64-bit binary with the following protections:
└─$ checksec --file=monty RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH 82 Symbols No 0 2 monty We can see that it has all the protections, after opening it in Ghidra we can see that there is also a win() function that prints the flag, so it&amp;rsquo;s a ret2win challenge.</description></item><item><title>aplet123</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/aplet123/</link><pubDate>Sun, 25 Feb 2024 20:00:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/aplet123/</guid><description>Challenge Description: bliutech: Can we get ApletGPT? me: No we have ApletGPT at home. ApletGPT at home:
Intuition We are given an ELF 64-bit binary with the following protections:
$ checksec --file=aplet123 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH 49 Symbols No 0 3 aplet123 We can see that it has canary and No PIE, after opening it in Ghidra we can see that we have three options from which we can choose, the only one that actually leaks something is the first option which can be entered if our input has &amp;lsquo;i&amp;rsquo;m&amp;rsquo; in it.</description></item><item><title>Pogn</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/pogn/</link><pubDate>Thu, 22 Feb 2024 01:42:10 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/pogn/</guid><description>Challenge Description Pogn in mong.
pogn.chall.lac.tf
Intuition We have a Pong game where one paddle is controlled by the client user and the other by the server script. Naturally, the server paddle always follows the ball with enough speed to never miss it. Looking throught the client code, we can see that the entire game is mirrored on it, while the real game state is maintained on the server-side.</description></item><item><title>Sus</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/sus/</link><pubDate>Thu, 22 Feb 2024 01:42:02 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/sus/</guid><description>Challenge Description sus
Intuition The challenge is a simple return to libc with ROP. We need to leak the libc base by printing the puts from GOT and then return to system. Luckily, our input also overflows a variable that gets into RDI before return, which gives us control over what system executes. Running checksec on it shows us there is no PIE, which makes leaking libc through puts is even easier.</description></item><item><title>Pizza</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/pizza/</link><pubDate>Thu, 22 Feb 2024 01:41:59 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/pizza/</guid><description>Challenge Description yummy
Intuition We are given an ELF 64-bit binary, with the following protections:
$ checksec pizza LIBC_FILE=/lib/x86_64-linux-gnu/libc.so.6 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled PIE enabled No RPATH No RUNPATH 44 Symbols No 0 2 pizza We can see it has partial RELRO and no canary, which suggests buffer overflow and GOT overwrite can be done.</description></item><item><title>Sandbox</title><link>https://dothidden.xyz/ctfs/squarectf_2023/sandbox/</link><pubDate>Mon, 19 Feb 2024 14:54:01 +0200</pubDate><guid>https://dothidden.xyz/ctfs/squarectf_2023/sandbox/</guid><description>Challenge Description I &amp;ldquo;made&amp;rdquo; &amp;ldquo;a&amp;rdquo; &amp;ldquo;python&amp;rdquo; &amp;ldquo;sandbox&amp;rdquo; &amp;quot;&amp;quot;&amp;quot;&amp;quot; nc 184.72.87.9 8008
Intuition It seems the server blacklist the space character so I am not able to cat flag.txt.
Solution Escape the space character by using the following command:
┌──🮤 HON3YP0T🮥─🮤 192.168.0.234🮥─🮤直 192.168.0.17🮥 ├──🮤 ~🮥 └─ nc 184.72.87.9 8008 [11:51PM ] Hi! Welcome to the kidz corner sandbox! we made it super safe in here - you can execute whatever command you want, but only one word at a time so you can&amp;#39;t do anything too dangerous, like steal our flags!</description></item><item><title>Penguin-Login</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/penguin-login/</link><pubDate>Sun, 18 Feb 2024 20:05:34 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/penguin-login/</guid><description>Challenge Description I got tired of people leaking my password from the db so I moved it out of the db. penguin.chall.lac.tf
Intuition The website is really basic, it only does one request which is vulnerable to SQL injections.
Solution By looking in the source code, I notice that the original query is &amp;quot;SELECT * FROM penguins WHERE name = '%s'&amp;quot; but the tricky part is that a whitelist of characters is used to filter the input.</description></item><item><title>New-Housing-Portal</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/new-housing-portal/</link><pubDate>Sun, 18 Feb 2024 20:05:23 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/new-housing-portal/</guid><description>Challenge Description After that old portal, we decided to make a new one that is ultra secure and not based off any real housing sites. Can you make Samy tell you his deepest darkest secret?
Intuition When I register to the website I can exploit an XSS vulnerability on my username. In order to get the flag I need to get an invitation from the admin. In order to force the admin to send me an invitation I probably have to use an SSRF vulnerability to make him use the invitation request API.</description></item><item><title>La-Housing-Portal</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/la-housing-portal/</link><pubDate>Sun, 18 Feb 2024 20:05:09 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/la-housing-portal/</guid><description>Challenge Description Portal Tips Double Dashes (&amp;quot;&amp;ndash;&amp;quot;) Please do not use double dashes in any text boxes you complete or emails you send through the portal. The portal will generate an error when it encounters an attempt to insert double dashes into the database that stores information from the portal.
Also, apologies for the very basic styling. Our unpaid LA Housing(tm) RA who we voluntold to do the website that we gave FREE HOUSING for decided to quit - we&amp;rsquo;ve charged them a fee for leaving, but we are stuck with this website.</description></item><item><title>Flaglang</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/flaglang/</link><pubDate>Sun, 18 Feb 2024 20:04:40 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/flaglang/</guid><description>Challenge Description Do you speak the language of the flags?
Intuition The website has two dropdown where I can choose two countries and see how they say &amp;ldquo;Hello world&amp;rdquo;. But, in the list there is also another country which is the Flagistan. If I try to select it, the website returns an error. To resume I need access to the Flagistan language.
Solution The solution is really simple, I can just capture the request using Burp and I notice that a cookie is set by using the ISO code of the country.</description></item><item><title>Shattered-Memories</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/shattered-memories/</link><pubDate>Sun, 18 Feb 2024 20:04:26 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/shattered-memories/</guid><description>Challenge Description I swear I knew what the flag was, but I can&amp;rsquo;t seem to remember it anymore&amp;hellip; can you dig it out from my inner psyche?
Intuition Let&amp;rsquo;s open first the program using ghidra and see what we can find.
It seems the flag is split into different parts into the stack.
Solution We can start looking at the first offset local_98 which is the lactf{no string in the Ghidra representation where this input is used int the strncmp function.</description></item><item><title>OneByOne</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/onebyone/</link><pubDate>Sun, 18 Feb 2024 20:03:57 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/onebyone/</guid><description>Challenge Description One&amp;hellip;.. by&amp;hellip;&amp;hellip;&amp;hellip;. one&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip; whew I&amp;rsquo;m tired, this form is waaaaaaay too long.
Note: the flag does have random characters at the end - that is intentional.
Intuition I may have to use the same technique as in the Infinite loop challenge, so let&amp;rsquo;s look at the source code.
Solution In the script tag, we see a huge list of characters that we can choose from the select. I quickly noticed a weird pattern where all characters have the same number except one per list.</description></item><item><title>Closed</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/closed/</link><pubDate>Sun, 18 Feb 2024 20:03:33 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/closed/</guid><description>Challenge Description Over spring break, my friend sent me this picture of a place they went to, and said it was their favorite plate to visit but it closed :(.
Where is this rock?
Answer using the coordinates of the bottom left corner of the rock, rounded to the nearest thousandth. If the coordinates were the physical location of the bruin bear statue, the flag would be lactf{34.071,-118.445}. Note that there is no space in the flag.</description></item><item><title>InfniteLoop</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/infiniteloop/</link><pubDate>Sun, 18 Feb 2024 20:03:20 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/infiniteloop/</guid><description>Challenge Description I found this google form but I keep getting stuck in a loop! Can you leak to me the contents of form and the message at the end so I can get credit in my class for submitting? Thank you!
Intuition If I submit the form, I keep having to fill it out again. So maybe I can find something in the source code ?
Solution If we look in the source code, in the script tag, we can see the that the flag is hidden in two parts.</description></item><item><title>Discord Events</title><link>https://dothidden.xyz/ctfs/la_ctf_2024/discord_events/</link><pubDate>Sun, 18 Feb 2024 12:18:57 +0200</pubDate><guid>https://dothidden.xyz/ctfs/la_ctf_2024/discord_events/</guid><description>Challenge Description I wrote a new script to sync PBR&amp;rsquo;s events to a bunch of places. I even deployed it to the LA CTF server with a flag as an event id!
Note: the event ID is formatted in the normal flag format lactf{&amp;hellip;} - it is not the discord numerical ID.
Intuition The main hint I have here is the name of the challenge himself Discord Events. I thought the flag was hidden in the discord events of the LA CTF server.</description></item><item><title>Tacocat</title><link>https://dothidden.xyz/ctfs/37c3_potluckctf_2023/tacocat/</link><pubDate>Fri, 05 Jan 2024 22:50:30 +0100</pubDate><guid>https://dothidden.xyz/ctfs/37c3_potluckctf_2023/tacocat/</guid><description>Challenge Description This is an upsolve, so I don&amp;rsquo;t really remember, but it went something like We had no good ideas but we figured a python escape is always welcome.
Intuition The code for the jail is given to us and albeit, very short:
while True: x = input(&amp;#34;palindrome? &amp;#34;) assert &amp;#34;#&amp;#34; not in x, &amp;#34;comments are bad&amp;#34; assert all(ord(i) &amp;lt; 128 for i in x), &amp;#34;ascii only kthx&amp;#34; assert x == x[::-1], &amp;#34;not a palindrome&amp;#34; assert len(x) &amp;lt; 36, &amp;#34;palindromes can&amp;#39;t be more than 35 characters long, this is a well known fact.</description></item><item><title>Apethanto</title><link>https://dothidden.xyz/ctfs/htb_university_2023/apethanto/</link><pubDate>Sun, 10 Dec 2023 14:21:20 +0200</pubDate><guid>https://dothidden.xyz/ctfs/htb_university_2023/apethanto/</guid><description>Intuition We first arrive into a website which seems to be static. But after inspecting the source code we noticed a link to a metabase vhost. After adding the vhost to my /etc/hosts file, I was able to access the metabase instance. After some research, I found out that the metabase instance was vulnerable to CVE-2023-38646, a pre-authentication RCE vulnerability.
Solution In order to exploit the vulnerability I first created an nc server on my machine to be able to RCE and I used the following payload:</description></item><item><title>GateCrash</title><link>https://dothidden.xyz/ctfs/htb_university_2023/gatecrash/</link><pubDate>Sun, 10 Dec 2023 13:37:49 +0200</pubDate><guid>https://dothidden.xyz/ctfs/htb_university_2023/gatecrash/</guid><description>Challenge Description An administrative portal for the campus parking area has been identified, bypassing it&amp;rsquo;s authentication and gaining access to the gate control would allow us to unlock it and use staff vehicles for securing the campus premises way faster.
Intuition When expecting the code I noticed only the User-Agent was white-listed, so I changed it to Mozilla/7.0 because it&amp;rsquo; one that would pass the check for the &amp;lsquo;browser unsupported error&amp;rsquo;.</description></item><item><title>Flipper</title><link>https://dothidden.xyz/ctfs/glacierctf_2023/flipper/</link><pubDate>Fri, 24 Nov 2023 20:00:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/glacierctf_2023/flipper/</guid><description>Challenge Description Our OS professor keeps talking about Rowhammer, and how dangerous it is. I don&amp;rsquo;t believe him, so you get 1 bitflip to try and steal the flag from my kernel! Base repo is https://github.com/IAIK/sweb (commit ad1b59a5c2acbd5bff346bdf282a4d5e21bd9cb1)
Intuition We did not manage to solve this during the competition, although I liked it so much that I wanted to do a writeup for it anyway and store it. The solution idea is taken from a writeup shared by another competitor after the CTF.</description></item><item><title>Los-ifier</title><link>https://dothidden.xyz/ctfs/glacierctf_2023/los-ifier/</link><pubDate>Fri, 24 Nov 2023 20:00:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/glacierctf_2023/los-ifier/</guid><description>Challenge Description: Normal binary for normal people.
Intuition First we run a checksec and a file on the binary and we can see that it&amp;rsquo;s statically linked and that it lacks PIE. When first opening the binary in Ghidra we see a simple main function with nothing special, we can also observe that there is a function named setup() called, let&amp;rsquo;s investigate. When opening the function, there is an interesting call made : register_printf_specifier(0x73,printf_handler,printf_arginfo_size).</description></item><item><title>Memorial Cabbage</title><link>https://dothidden.xyz/ctfs/cakectf_2023/memorial_cabbage/</link><pubDate>Thu, 23 Nov 2023 23:24:31 +0200</pubDate><guid>https://dothidden.xyz/ctfs/cakectf_2023/memorial_cabbage/</guid><description>Challenge Description Author: ptr-yudai Description: Memorial Cabbage Unit 3
Intuition We can see the below source code for the challenge. It creates a temporary directory using template /tmp/cabbage.XXXXXX and then uses it to write a memo to it (/tmp/cabbage.XXXXXX/memo.txt).
However, what is interesting to notice in the manpage for mkdtemp() is that you&amp;rsquo;re supposed to give a modifiable buffer:
DESCRIPTION The mkdtemp() function generates a uniquely named temporary directory from template.</description></item><item><title>Roplon</title><link>https://dothidden.xyz/ctfs/squarectf_2023/roplon/</link><pubDate>Fri, 17 Nov 2023 20:00:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/squarectf_2023/roplon/</guid><description>Challenge Description I THINK that buffer is big enough, right?
Solution In the roplon.c file, we observe the invocation of several functions. Notably, two functions stand out: cat_flag, which assigns the command_buf to &amp;ldquo;cat flag.txt,&amp;rdquo; and do_the_thing, which launches a shell with the command provided as an argument. Additionally, the program allows writing to a buffer. The program&amp;rsquo;s vulnerability lies in a buffer of 16 bytes, but the fgets function permits writing up to 9999 bytes .</description></item><item><title>Comments</title><link>https://dothidden.xyz/ctfs/ekoparty_2023/comments/</link><pubDate>Sun, 12 Nov 2023 19:56:46 +0200</pubDate><guid>https://dothidden.xyz/ctfs/ekoparty_2023/comments/</guid><description>Challenge Description You must solve the first challenge to get the answer, all you need is inside the Lobby.
We have access to a GitHub repository with a single README file and a GitHub action workflow.
Intuition Checking the workflow script inside .github/workflows/yearly_review.yml
name: Parse review of teacher on: issues: types: [opened, edited] jobs: parse-review: runs-on: ubuntu-latest steps: - name: Extract Teacher name and review from issue body id: extract-review env: db_pass: ${{ secrets.</description></item><item><title>Fork Knife</title><link>https://dothidden.xyz/ctfs/ekoparty_2023/fork-knife/</link><pubDate>Sun, 12 Nov 2023 19:56:46 +0200</pubDate><guid>https://dothidden.xyz/ctfs/ekoparty_2023/fork-knife/</guid><description>Challenge Description You must solve the second challenge to get the answer, all you need is inside the Lobby.
We have access to a GitHub repository with two files and a GitHub action executed for pull requests.
Intuition All the necessary information should be within this repository. We start by examining the action file at .github/workflows/grade.yml
on: pull_request_target jobs: build: name: Grade the test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: ref: ${{ github.</description></item><item><title>Snowing</title><link>https://dothidden.xyz/ctfs/ekoparty_2023/snowing/</link><pubDate>Sun, 12 Nov 2023 18:54:04 +0200</pubDate><guid>https://dothidden.xyz/ctfs/ekoparty_2023/snowing/</guid><description>Challenge Description So, because we wrote this writeup kinda late, we don&amp;rsquo;t have the original description anymore. But, the original description was heavily hinting that some text is hidden in the Phrack articles hosted on EKONET (which was some online file server you could access through Gopher). This actually is some continuation of the protect.exe challenge. We recommend you take a look at that writeup as well.
Intuition So, since the title of the challenge is Snowing and the tag for it is steganography, it heavily hints at Snow, the program we just showcased in Protect, that hides messages in the whitespaces of text.</description></item><item><title>Protect</title><link>https://dothidden.xyz/ctfs/ekoparty_2023/protect/</link><pubDate>Sun, 12 Nov 2023 18:53:58 +0200</pubDate><guid>https://dothidden.xyz/ctfs/ekoparty_2023/protect/</guid><description>Challenge Description So, because we wrote this writeup kinda late, we don&amp;rsquo;t have the original description anymore. The idea is that some binary on the EKONET (which was some online file server you could access through Gopher) was modified in some way, to be different than its intended, original version. That was what the original description implied.
Intuition There was a binary called protect.exe which fit too well with the name of the challenge.</description></item><item><title>Boze</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/boze/</link><pubDate>Sun, 22 Oct 2023 18:37:18 -0400</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/boze/</guid><description>Challenge Description How smart and capable is the smarty lib?
Intuition This challange was a php RCE jail escape. When you enter the site on the / route you are greeted with the source code of the page. How thoughtful is that :)
Upon inspection we can see that the main page behaves differently if we have a param named content. We see that with this parameter we call the display function unsanitized from the smarty library.</description></item><item><title>Red-Handed</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/red-handed/</link><pubDate>Sun, 22 Oct 2023 15:29:17 -0400</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/red-handed/</guid><description>Challenge Description Someone has connected to my network and its trying to hack me.
Find the flag. Flag format CTF{sha256}
By far the most fun challange in the competition. You received a pcap capture and had to go down the rabbit hole.
Intuition Opening the pcap we can observe that the communication is bluetooth. We than kept grinding and understanding the communication protocol and we were able to subsctract some conclusions.</description></item><item><title>Forty-Nine</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/forty-nine/</link><pubDate>Sun, 22 Oct 2023 14:55:41 -0400</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/forty-nine/</guid><description>Challenge Description We have a random fact generator that might have some problems sanitizing the input. It may not be as simple as 7*7.
Flag format: CTF{sha256}
Intuition Having seen the funny description we know that this is yet another jail escape. Let&amp;rsquo;s look at the main page and see what all the fuss is about.
So we can understand the following: the web page takes our input and that the server is in python.</description></item><item><title>Log-Forensics</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/log-forensics/</link><pubDate>Sun, 22 Oct 2023 20:05:26 +0200</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/log-forensics/</guid><description>Challenge Description We know for sure that an attacker attempted to dump the user&amp;rsquo;s passwords on the targeted system. Using your favourite text editor or Terminal commands please help us find answers to the following questions.
Intuition &amp;amp; Solution We basically just used grep, find and vim to go through logs and terminal command hystory to find most of the answers. Some of the answer we could figure out just by searching on the internet.</description></item><item><title>Code-Transpiler</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/code-transpiler/</link><pubDate>Sun, 22 Oct 2023 14:04:13 -0400</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/code-transpiler/</guid><description>Challenge Description Bypass the security restriction and get th flag.
Flag format CTF{sha256}.
*This challenge is proudly sponsored by UNbreakable Romaia (program with a focus on beginners in cyber security). You might find writeups online but you should act like you don&amp;rsquo;t know that. *
Intuition Once entered the address we get redirected to / .
What we see from this page after inspecting the network tab is that the server is in werkzeug python.</description></item><item><title>Morse-Music</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/morse-music/</link><pubDate>Sun, 22 Oct 2023 19:46:13 +0200</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/morse-music/</guid><description>Challenge Description You might need to cross listen the message within the morse code.
Intuition Putting the audio through a morse decoder, we got a message saying the something along the lines of &amp;ldquo;it&amp;rsquo;s not about the morse code&amp;rdquo; and also a password. We opened the audio in audacity and looking at the histogram we saw a QR-code.
Solution Scanning the QR-code led to a string. We base64-decoded it which lead to some binary data.</description></item><item><title>Circle</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/circle/</link><pubDate>Sun, 22 Oct 2023 18:52:45 +0200</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/circle/</guid><description>Challenge Description Can you make it a line?
Intuition We got a gen executable and an flagenc.txt file, intuitively we deal with an encryption algorithm. After opening the executable in ghidra we figure that there are two input strings (let&amp;rsquo;s call them a and b) and only one of them is relevant. All relevant operations were related to a for loop reconstructed below. In the end the encrypted flag was printed (the content of flagenc.</description></item><item><title>Nsort</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/nsort/</link><pubDate>Sun, 22 Oct 2023 16:00:34 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/nsort/</guid><description>Challenge Description Can you escape the sandbox? Do you have all the needed info?
Intuition The vulnerability was a RCE given through the use of eval in php web page. It was a RCE vulnerability written in the style of a web injection. There was a hidden parameter when doing a get request on the index.html page. If we had that param the page executed an eval on a formatted string that, we guessed was of this format eval(“somePHPSortingFunction($_GET[‘poc’])”).</description></item><item><title>Combination</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/combination/</link><pubDate>Sun, 22 Oct 2023 15:53:57 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/combination/</guid><description>Challenge Description There are not that many combinations one can do here.
NOTE: The format of the flag is CTF{}, for example: CTF{foobar}. The flag must be submitted in full, including the CTF and curly bracket parts.
Intuition The binary “combined” stores a big array of 4 byte strings each representing a hex number such as “0x32”. This array is used to validate the user input by comparing each character of the input to an entry in the array with an increment of nine.</description></item><item><title>Awesomeone</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/awesomeone/</link><pubDate>Sun, 22 Oct 2023 15:39:52 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/awesomeone/</guid><description>Challenge Description One would simply want to be with the rest.
NOTE: The format of the flag is CTF{}, for example: CTF{foobar}. The flag must be submitted in full, including the CTF and curly bracket parts.
Intuition Decompiling the agoodone binary leads to the check_password function which uses the length of the encrypted flag in a xor operation together with the user input. The flag is encrypted but the length is constant allowing us to craft an input that can pass this check.</description></item><item><title>Soc-Is-Mandatory</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/soc-is-mandatory/</link><pubDate>Sun, 22 Oct 2023 14:06:48 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/soc-is-mandatory/</guid><description>Challenge Description You are part of a cybersecurity team working in a state-of-the-art Security Operations Center (SOC). Your SOC has been tasked with monitoring a critical infrastructure network that includes various servers, databases, and communication channels. As a SOC analyst, it&amp;rsquo;s your duty to keep this infrastructure secure and ensure that it remains operational.
Early this morning, your team received alerts from the intrusion detection system (IDS) indicating suspicious network activities.</description></item><item><title>4aes</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/4aes/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/4aes/</guid><description>Challenge Description Chall:
k1 = random1 + b&amp;#34;A&amp;#34;*29 k2 = random2 + b&amp;#34;A&amp;#34;*29 plain = b&amp;#39;This is a non-secret message....&amp;#39; cipher = AES(k1,AES(k2,plain)) # ECB mode print(plain,&amp;#39;\n&amp;#39;,cipher) &amp;gt; b&amp;#39;7\xcf7\xce\xa6 \xbe\t\xba\x03\xe4\xac\x9e\x86\x85\xf5YZYa_7\xae\xa1\xe6\xc1\xd1\xad\xfb\x9c\x99s&amp;#39; Flag:
sha256 = hashlib.sha256(k1+k2).hexdigest() print(&amp;#34;CTF{&amp;#34;+sha256+&amp;#34;}&amp;#34;) Intuition We can use a meet-in-the-middle technique to bruteforce the missing bytes.
Solution Simple bruteforce script:
#!/usr/bin/env python3 from Crypto.Cipher import AES import hashlib from threading import Thread ct = b&amp;#39;7\xcf7\xce\xa6 \xbe\t\xba\x03\xe4\xac\x9e\x86\x85\xf5YZYa_7\xae\xa1\xe6\xc1\xd1\xad\xfb\x9c\x99s&amp;#39; plain = b&amp;#39;This is a non-secret message.</description></item><item><title>baby-bof</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/baby-bof/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/baby-bof/</guid><description>Challenge Description This is a basic buffer overflow.
Flag format: CTF{sha256}
Intuition By decompiling we see an obvious buffer overflow and a flag function that we can jump to.
void flag(void) { char local_98 [136]; FILE *local_10; local_10 = fopen(&amp;#34;flag.txt&amp;#34;,&amp;#34;r&amp;#34;); if (local_10 == (FILE *)0x0) { puts(&amp;#34;Well done!! Now use exploit remote! &amp;#34;); /* WARNING: Subroutine does not return */ exit(0); } fgets(local_98,0x80,local_10); printf(local_98); return; } /* Called by the main function */ void vuln(void) { char local_138 [304]; gets(local_138); return; } PIE is not enabled so we can just hardcode the addresses in an echo.</description></item><item><title>bistro</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/bistro/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/bistro/</guid><description>Challenge Description Maybe you can get a free menu!!
Flag format: CTF{sha256}
Intuition Checksec the binary to see what we have.
$ checksec restaurant LIBC_FILE=/lib/x86_64-linux-gnu/libc.so.6 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 70 Symbols No 0 2 restaurant Partial RELRO and no PIE. Great! Let&amp;rsquo;s decompile:
undefined8 custom(void) { char local_78 [112]; printf(&amp;#34;Choose what you want to eat:&amp;#34;); gets(local_78); gets(local_78); return 0; } undefined8 main(EVP_PKEY_CTX *param_1) { int local_c; init(param_1); puts(&amp;#34;==============================&amp;#34;); puts(&amp;#34; MENU &amp;#34;); puts(&amp;#34;==============================&amp;#34;); puts(&amp;#34;1.</description></item><item><title>bistro-v2</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/bistro-v2/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/bistro-v2/</guid><description>Challenge Description Maybe you can get a free menu!!
Flag format: CTF{sha256}
Intuition Checksec the binary to see what we have.
$ checksec restaurant-v2 LIBC_FILE=/lib/x86_64-linux-gnu/libc.so.6 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 82 Symbols No 0 4 restaurant-v2 It&amp;rsquo;s the same binary as in bistro, but with an added function that checks a &amp;ldquo;code&amp;rdquo;.</description></item><item><title>book</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/book/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/book/</guid><description>Challenge Description Read books for inspiration so you know what to write!
Flag format: CTF{sha256}
Intuition Checksec the binary to see what we have.
$ checksec book LIBC_FILE=/lib/x86_64-linux-gnu/libc.so.6 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled PIE enabled No RPATH No RUNPATH 74 Symbols No 0 4 book We have PIE enabled but Partial RELRO. Partial RELRO might mean that we will overwrite GOT entries.</description></item><item><title>defcamp6</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/defcamp6/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/defcamp6/</guid><description>Challenge Description Sometimes, we must look back in time to bring all the good vibes back!
Flag format: CTF{sha256}
Intuition The description and category (OSINT + Stego) seems to hint at using the wayback machine. We search for the photo on the wayback machine and find the &amp;ldquo;original&amp;rdquo; photo posted on the Defcamp website. We notice that the top-left corner has modified pixels, so maybe something is hidden in it with the LSB/MSB technique.</description></item><item><title>Internet-Is-Dangerous</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/internet-is-dangerous/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/internet-is-dangerous/</guid><description>Challenge Description Welcome to the &amp;lsquo;Internet is Dangerous for Kids&amp;rsquo; investigation, where you&amp;rsquo;ll step into the shoes of a cybersecurity investigator tasked with solving a high-stakes kidnapping case. You will learn about a juvenile predator who is luring their victims on social media platforms, ultimately resulting in kidnappings and human trafficking. Its important to know that the cybercriminal managed to establish friendly connections with all of their victims. The cybercriminal&amp;rsquo;s ultimate goal was to deceive his victims into believing they had won a significant prize of interest, enticing them to visit suspicious places at unusual hours.</description></item><item><title>system-leak</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/system-leak/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/system-leak/</guid><description>Challenge Description Leak the entire system, but wait this is not zeenbleed.
Flag format: CTF{sha256}
Intuition Checksec the binary to see what we have.
$ checksec syslog LIBC_FILE=/lib/x86_64-linux-gnu/libc.so.6 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols No 0 4 syslog All protections enabled! Wow! When I saw this initially I thought this will be a hard binary to exploit.</description></item><item><title>system-write</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/system-write/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/system-write/</guid><description>Challenge Description Wait what? We can write data, but where?
Flag format: CTF{sha256}
Intuition Checksec the binary to see what we have.
$ checksec syslog-write LIBC_FILE=/lib/x86_64-linux-gnu/libc.so.6 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH 49 Symbols No 0 4 syslog-write We have PIE disabled and Partial RELRO. Partial RELRO might mean that we will overwrite GOT entries.</description></item><item><title>xmisp</title><link>https://dothidden.xyz/ctfs/defcamp_quals_2023/xmisp/</link><pubDate>Sun, 22 Oct 2023 09:56:31 +0300</pubDate><guid>https://dothidden.xyz/ctfs/defcamp_quals_2023/xmisp/</guid><description>Challenge Description It&amp;rsquo;s MIPS or MISP i dont know.
Flag format: CTF{sha256}
Intuition We decompile the binary and see it&amp;rsquo;s a MIPS binary. We find it does some XORing with some specific bytes. We can take the encrypted flag and the beginning of the flag (CTF{) to perhaps find the key for each byte.
Solution Did it in an interactive python session:
# Extract the string from Ghidra &amp;gt;&amp;gt;&amp;gt; s = b&amp;#34;ER@}&amp;gt;062eb6d1bbb36031&amp;gt;6c2522?</description></item><item><title>Web3</title><link>https://dothidden.xyz/ctfs/balsnctf_2023/web3/</link><pubDate>Wed, 11 Oct 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/balsnctf_2023/web3/</guid><description>Web3 Description: Hello Web3!
Challenge Author: ysc
We only have a url with port 3000 We can see the source code for the index page by sending a request to the url
const express = require(&amp;#34;express&amp;#34;); const ethers = require(&amp;#34;ethers&amp;#34;); const path = require(&amp;#34;path&amp;#34;); const app = express(); app.use(express.urlencoded()); app.use(express.json()); app.get(&amp;#34;/&amp;#34;, function (_req, res) { res.sendFile(path.join(__dirname + &amp;#34;/server.js&amp;#34;)); }); function isValidData(data) { if (/^0x[0-9a-fA-F]+$/.test(data)) { return true; } return false; } app.</description></item><item><title>0FA</title><link>https://dothidden.xyz/ctfs/balsnctf_2023/0fa/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/balsnctf_2023/0fa/</guid><description>0FA Description: I really don&amp;rsquo;t like 2FA, so I created a 0FA login system!
Challenge Author: kaibro
we have a php application we can see that in index.php it s just a submit query input that can be vulnerable &amp;lt;form method=&amp;#34;post&amp;#34; action=&amp;#34;flag.php&amp;#34;&amp;gt; &amp;lt;div class=&amp;#34;field&amp;#34;&amp;gt; &amp;lt;input type=&amp;#34;text&amp;#34; class=&amp;#34;input&amp;#34; name=&amp;#34;username&amp;#34; placeholder=&amp;#34;Username...&amp;#34;&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;input type=&amp;#34;submit&amp;#34; class=&amp;#34;button is-primary&amp;#34;&amp;gt;&amp;lt;br&amp;gt; &amp;lt;/form&amp;gt; it goes to the flag.php
&amp;lt;?php include_once(&amp;#34;config.php&amp;#34;); fingerprint_check(); if(!isset($_POST[&amp;#39;username&amp;#39;]) || $_POST[&amp;#39;username&amp;#39;] !== &amp;#34;admin&amp;#34;) die(&amp;#34;Login failed!&amp;#34;); ?</description></item><item><title>merger_2077</title><link>https://dothidden.xyz/ctfs/balsnctf_2023/merger_2077/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/balsnctf_2023/merger_2077/</guid><description>Challenge description Title: merger-2077
Description: After a long and tiring ctf challenge, you decided to play a phone game to relax yourself. Note: Flag is hidden somewhere in memory, and this challenge is safe to run directly on your device. If you manage to run it on emulators, you shall fix it on your own.
Challenge Author: asef18766
Solution One very straight-forward Android challenge, that doesn&amp;rsquo;t really require much reversing at all.</description></item><item><title>Babysandbox</title><link>https://dothidden.xyz/ctfs/codegate_qualifs_2023/babysandbox/</link><pubDate>Sun, 09 Jul 2023 01:52:07 +0300</pubDate><guid>https://dothidden.xyz/ctfs/codegate_qualifs_2023/babysandbox/</guid><description>Challenge Description Can&amp;rsquo;t remember. ups
Intuition For this challenge we have the source code available, so looking at it we notice a few things.
Firstly, we notice that the first input is the length and the payload for a seccomp rule. Then we see that a first check is passed and vuln is called. We can provide a second input of maximum 256 bytes, which is used in a printf-like function.</description></item><item><title>Tornado Warning</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/tornado_warning/</link><pubDate>Sat, 08 Jul 2023 23:39:52 +0300</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/tornado_warning/</guid><description>Challenge Description Check out this alert that I received on a weather radio. Somebody transmitted a secret message via errors in the header! Fortunately, my radio corrected the errors and recovered the original data. But can you find out what the secret message says?
Note: flag is not case sensitive.
Author: Pomona
Hints:
The header is encoded with Specific Area Message Encoding.
The three buzzes are supposed to be identical, but in this challenge, they are different due to errors.</description></item><item><title>vmwhere2</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/vmware2/</link><pubDate>Sat, 08 Jul 2023 22:47:53 +0300</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/vmware2/</guid><description>Challenge Description Usage: ./chal program
Author: richard
Intuition As the name suggests, this is a rather classic VM challenge. We&amp;rsquo;re given the cpu code and a program and have to reverse it. Opening chal in ghidra leads to the implementation of each instruction, which enables us to write a disassembler for the program. Most of the opcodes have pretty easy implementations, aside from a few more interesting ones:
opcode 0x10 -&amp;gt; reverses the stack in a range opcode 0x11 -&amp;gt; pops the top of the stack and pushes 8 bits corresponding to the popped value base 2 representation opcode 0x12 -&amp;gt; pops 8 values of the stack (expected bits), interprets them as the bits of a base 2 number, and pushed the corresponding number on the stack Solution Looking at the disassembled code we pieced everything together.</description></item><item><title>Jonahs Journal</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/jonahs_journal/</link><pubDate>Sat, 01 Jul 2023 19:42:39 +0200</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/jonahs_journal/</guid><description>Challenge Description After dinner, Jonah took notes into an online notebook and pushed his changes there. His usernames have been relatively consistent but what country is he going to next? Flag should be in format uiuctf{country_name}
Intuition Because I resolved What&amp;rsquo;s for dinner before, I knew that I had to look for the same username Jonahexplorer. I know from the challenge description that I have to look for an online notebook and the hint of the challenge was the following: forks, trees, pushing, and pulling, so there is a high chance that the notebook is on GitHub.</description></item><item><title>What's for Dinner</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/whats_for_dinner/</link><pubDate>Sat, 01 Jul 2023 19:41:58 +0200</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/whats_for_dinner/</guid><description>Challenge Description Jonah Explorer, world renowned, recently landed in the city of Chicago, so you fly there to try and catch him. He was spotted at a joyful Italian restaurant in West Loop. You miss him narrowly but find out that he uses a well known social network and and loves documenting his travels and reviewing his food. Find his online profile.
Intuition We know that Jonah is in Italian restaurant somewhere in Chicago, more precisely in West Loop.</description></item><item><title>Finding Jonah</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/finding_jonah/</link><pubDate>Sat, 01 Jul 2023 19:40:40 +0200</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/finding_jonah/</guid><description>Challenge Description Jonah offered a reward to whoever can find out what hotel he is staying in. Based on the past information (chals), can you find out what the hotel he stayed at was? Flag should be uiuctf{hotel_name_inn} Intuition First thing I did is to reverse search the image with Google Lens but unfortunately, I didn&amp;rsquo;t find anything interesting so I had to find something else and I decided to manually look for the hotel on Google Earth.</description></item><item><title>Finding Artifacts 2</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/finding_artifacts_2/</link><pubDate>Sat, 01 Jul 2023 15:47:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/finding_artifacts_2/</guid><description>Challenge Description New York City is known for its sprawling subway system. However, none of that would have been possible without modern earth-moving equipment. Find where the first ever shovel was used to start digging the subway. Flag format should be in uiuctf{name_of_museum}
Intuition The first step of the reflexion I had was the following: I need to deal with the different information the challenge gives me.
Where: New York What: First shovel used to build the subway Information I need : The museum where the shovel is stored.</description></item><item><title>First Class Mail</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/first_class_mail/</link><pubDate>Sat, 01 Jul 2023 15:47:00 +0200</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/first_class_mail/</guid><description>Challenge Description Jonah posted a picture online with random things on a table. Can you find out what zip code he is located in? Flag format should be uiuctf{zipcode}, ex: uiuctf{12345}. Intuition Let&amp;rsquo;s begin by analyzing the image as the challenge description does not really provide any useful information, we only know that we have to find out a zipcode. The two related things to a zipcode are the envelope with some barcode and the letter.</description></item><item><title>Back to 1986</title><link>https://dothidden.xyz/ctfs/codegate_qualifs_2023/back_to_1986/</link><pubDate>Fri, 30 Jun 2023 15:05:27 +0300</pubDate><guid>https://dothidden.xyz/ctfs/codegate_qualifs_2023/back_to_1986/</guid><description>Challenge Description We&amp;rsquo;re given a Linux kernel which when run starts an instance of the 1986 arkanoid game.
Intuition We can see that the shape of the bricks corresponds with a letter. In later levels, the letters are obfuscated with extra grey shaped bricks, but those can be easily removed because they&amp;rsquo;re all of the same colour. The solution would be to skip levels and convert each level&amp;rsquo;s letter to an ASCII value.</description></item><item><title>Papapapa</title><link>https://dothidden.xyz/ctfs/google_ctf_2023/papapapa/</link><pubDate>Fri, 30 Jun 2023 13:11:37 +0300</pubDate><guid>https://dothidden.xyz/ctfs/google_ctf_2023/papapapa/</guid><description>Challenge Description Is this image really just white?
Intuition Well&amp;hellip; probably not. Checking all the pixel values we only get white, so the data must be somewhere else. Checking the metadata we see nothing.
Solution At one point we generated a full white image with the same dimensions as the provided one and the same format. The result? An image much smaller in size! So the data is there. At the suggesionts of mehanix we identified the bytes which specify the image size 1 and changed them to something bigger.</description></item><item><title>Npc</title><link>https://dothidden.xyz/ctfs/google_ctf_2023/npc/</link><pubDate>Fri, 30 Jun 2023 13:11:29 +0300</pubDate><guid>https://dothidden.xyz/ctfs/google_ctf_2023/npc/</guid><description>Challenge Description A friend handed me this map and told me that it will lead me to the flag. It is confusing me and I don&amp;rsquo;t know how to read it, can you help me out?
Intuition This challenge is quite interesting. You are given a secret (the flag) which is encrypted with a password, and a hint for the password. An important detail is that the password is composed of a few uniquely and randomly chosen words from the US constitution, which is given to us.</description></item><item><title>Storygen</title><link>https://dothidden.xyz/ctfs/google_ctf_2023/storygen/</link><pubDate>Fri, 30 Jun 2023 13:11:29 +0300</pubDate><guid>https://dothidden.xyz/ctfs/google_ctf_2023/storygen/</guid><description>Challenge Description I wrote a story generator. It&amp;rsquo;s still work in progress, but you can check it out.
Solution We are given a somewhat convoluted python script that generates a shell script, that subsequently is run to print out a generated story. It&amp;rsquo;s hard to understand, so you&amp;rsquo;ll have to look at it yourself. It probably does this so it can properly sanitize inputs without trying too hard.
import time import os time.</description></item><item><title>Symatrix</title><link>https://dothidden.xyz/ctfs/google_ctf_2023/symatrix/</link><pubDate>Fri, 30 Jun 2023 13:11:29 +0300</pubDate><guid>https://dothidden.xyz/ctfs/google_ctf_2023/symatrix/</guid><description>Challenge Description The CIA has been tracking a group of hackers who communicate using PNG files embedded with a custom steganography algorithm. An insider spy was able to obtain the encoder, but it is not the original code. You have been tasked with reversing the encoder file and creating a decoder as soon as possible in order to read the most recent PNG file they have sent.
Solution We are given a PNG file and a CPython transpilation/compilation of the original Python script used to embed a secret in the PNG file.</description></item><item><title>Write-Flag-Where2</title><link>https://dothidden.xyz/ctfs/google_ctf_2023/write-flag-where2/</link><pubDate>Fri, 30 Jun 2023 13:11:29 +0300</pubDate><guid>https://dothidden.xyz/ctfs/google_ctf_2023/write-flag-where2/</guid><description>Challenge Description This challenge is not a classical pwn In order to solve it will take skills of your own An excellent primitive you get for free Choose an address and I will write what I see But the author is cursed or perhaps it&amp;rsquo;s just out of spite For the flag that you seek is the thing you will write ASLR isn&amp;rsquo;t the challenge so I&amp;rsquo;ll tell you what I&amp;rsquo;ll give you my mappings so that you&amp;rsquo;ll have a shot.</description></item><item><title>Mine the Gap</title><link>https://dothidden.xyz/ctfs/google_ctf_2023/mine_the_gap/</link><pubDate>Fri, 30 Jun 2023 13:11:19 +0300</pubDate><guid>https://dothidden.xyz/ctfs/google_ctf_2023/mine_the_gap/</guid><description>Challenge Description Take a break from the other challenges and play a relxing game of Minesweeper I have even solved most of the board for you and marked many of the mines. I am completely sure they are correct so you just need to find the remaining ones.
Intuition Looking at the minesweeper map, it&amp;rsquo;s huge, but I noticed that the patterns look like wires and seem to lead to some structure which intuitively resemble logic gates.</description></item><item><title>Bf</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/bf/</link><pubDate>Fri, 16 Jun 2023 15:20:45 +0300</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/bf/</guid><description>Challenge Description Mal sehen, ob Sie dieses Mal Ihren Verstand in den Griff bekommen.
Author: Heith
Note We did not solve this challenge during this CTF. This writeup is just a descirption of the thought process we went through while attempting to solve this, and ultimately how we solved it based on this writeup 1 by matthw. So credits to him.
Attempts Clearly you can&amp;rsquo;t read brainfuck. And this one was particularly hard to read.</description></item><item><title>MyPin</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/mypin/</link><pubDate>Thu, 15 Jun 2023 12:43:32 +0300</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/mypin/</guid><description>Challenge Description I made a safe with a pin of only two digits. Author: Heith
First steps We&amp;rsquo;re provided with a .jar, so we are are working with Java. My tool of choice for this has been jadx-gui, which decompiles Java bytecode pretty nicely (be careful that it can misinterpret sometimes. Ghidra is an alternative for such cases).
Pulling up the disassembled code, we see two buttons, listeners, and some processing based on single digit (0 or 1) input from the two buttons.</description></item><item><title>Vm</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/vm/</link><pubDate>Thu, 15 Jun 2023 12:16:46 +0300</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/vm/</guid><description>Challenge Description Ever tried reversing a VM? Here&amp;rsquo;s a simple one!
Author: NoobHacker
Analyzing in Ghidra Opening the vm in ghidra, we can that each byte from the code is checked and interpreted accordingly. There are not too many possible instructions. Based on the decompilation we create a disassembler in python and parse the code with it.
Snippet from the python disassembler:
f = open(&amp;#34;./code&amp;#34;, &amp;#34;rb&amp;#34;) instructions = f.read() i = 0 while i &amp;lt; len(instructions): op = instructions[i] if op == 0: print(&amp;#39;nop&amp;#39;) elif op == 1: r = instructions[i + 1] print(f&amp;#39;push r{r}&amp;#39;) i += 1 elif op == 2: r = instructions[i + 1] print(f&amp;#39;pop r{r}&amp;#39;) i += 1 elif op == 3: r1 = instructions[i + 1] r2 = instructions[i + 2] print(f&amp;#39;mov r{r1} &amp;lt;- r{r2}&amp;#39;) i += 2 .</description></item><item><title>ASM</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/asm/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/asm/</guid><description>Description of the challenge What can I say except, &amp;ldquo;You&amp;rsquo;re welcome&amp;rdquo; :)
Author: NoobHacker
Solution The binary name issrop_me, so we can assume this is an srop challenge. The binary is so small we can just objdump it. Seems like the source code was written in assembly.
srop_me: file format elf64-x86-64 Disassembly of section .text: 0000000000401000 &amp;lt;vuln&amp;gt;: 401000: b8 01 00 00 00 mov eax,0x1 401005: bf 01 00 00 00 mov edi,0x1 40100a: 48 be 00 20 40 00 00 movabs rsi,0x402000 401011: 00 00 00 401014: ba 0f 00 00 00 mov edx,0xf 401019: 0f 05 syscall 40101b: 48 83 ec 20 sub rsp,0x20 40101f: b8 00 00 00 00 mov eax,0x0 401024: bf 00 00 00 00 mov edi,0x0 401029: 48 89 e6 mov rsi,rsp 40102c: ba 00 02 00 00 mov edx,0x200 401031: 0f 05 syscall 401033: 48 83 c4 20 add rsp,0x20 401037: c3 ret 0000000000401038 &amp;lt;_start&amp;gt;: 401038: e8 c3 ff ff ff call 401000 &amp;lt;vuln&amp;gt; 40103d: b8 3c 00 00 00 mov eax,0x3c 401042: bf 00 00 00 00 mov edi,0x0 401047: 0f 05 syscall 401049: c3 ret Disassembly of section .</description></item><item><title>Damn</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/damn/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/damn/</guid><description>Description Damn bro, Dam! &amp;ndash; Note: Find out the city that this dam is in. Flag format is n00bz{City_Name}
Author: NoobMaster
Solution The challenge provides us with the following image:
This was probably the easiest OSINT challenge we resolved, because we do not have a lot of information the best thing to do here is to reverse search the image using Google Lens and check the source of it.</description></item><item><title>Geoguesser</title><link>https://dothidden.xyz/ctfs/uiuctf_2023/geoguesser/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/uiuctf_2023/geoguesser/</guid><description>Description of the challenge We are given a compiled binary of the janet-lang interpreter, along with a &amp;ldquo;compiled&amp;rdquo; script written in janet-lang.
Solution So I&amp;rsquo;ll start off by saying that we work cooperatively on some challenges. For example, zenbassi also worked heavily on this one. So the writeup author is usually not the only one to credit for the challenge.
We run the challenge and it asks us to input some coordinates.</description></item><item><title>John Does Strikes Again</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/johndoesstrikesagain/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/johndoesstrikesagain/</guid><description>Description John Doe has escaped our high secruity1 prison again! We managed to intercept an xor key that he uses to send encrypted messages to people! Your aim is to find classified information on his top secret website! Start with the encrypted message -b'\x13\x00\x1d-A*!\x00Q\x16R\x02\x12\x07\n\x1b&amp;gt;\x0e\x06\x1a~O-D CU\t\x0e\x06 E2\n\x17bA#\x0b\t&amp;gt;O\x11\x011O\tH*\x1b\x10-\x08\x00)E\x02\nMck~)\x07&amp;quot;\x01H*+\n_\x01\x00\x00\x00c\n\x00!\x12V\r\x1d4A\x19\x16\x0b&amp;quot;O!N(\x00\x13Dy\x02\x000\x08\rn\x16\x19E\x16,\x0fS\x17H+\x1c\x03N)\nEU1\x0e\x01c\x10\x1b+\x16\x02\x0c\x1d-A\x11\x15\r8\x16H\x0f#\x0e\x0cOx' and the secret key -YouCanNeverCatchJohnDoe!We also intercepted the name of his account -31zdugxvkayexc4hzqhixxcfxb4y
Author: NoobMaster
Solution Let&amp;rsquo;s start by decrypting the message provided with the key YouCanNeverCatchJohnDoe!</description></item><item><title>Lost</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/lost/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/lost/</guid><description>Description I got lost. Help me find out where I am. Flag format is n00bz{Name_Of_Pin_On_Google_Maps}.
Author: Spectral
Solution First of all, let&amp;rsquo;s open the image where.png which is given by the challenge. We can see a bridge and a city in the background and the image seems to have a filter on it because the red and purple colors are more present than the others. Furthermore, some elements of the image are duplicated (same effect as beeing drunk).</description></item><item><title>MaaS</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/maas/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/maas/</guid><description>Description of the challenge Welcome to MaaS - Modulo as a Service!
Author: NoobMaster
Solution We are presented with the following challenge:
#!/usr/bin/python3 import random from Crypto.Util.number import * flag = open(&amp;#39;flag.txt&amp;#39;).read() alpha = &amp;#39;abcdefghijklmnopqrstuvwxyz&amp;#39;.upper() to_guess = &amp;#39;&amp;#39; for i in range(16): to_guess += random.choice(alpha) for i in range(len(to_guess)): for j in range(3): inp = int(input(f&amp;#39;Guessing letter {i}, Enter Guess: &amp;#39;)) guess = inp &amp;lt;&amp;lt; 16 print(guess % ord(to_guess[i])) last_guess = input(&amp;#39;Enter Guess: &amp;#39;) if last_guess == to_guess: print(flag) else: print(&amp;#39;Incorrect!</description></item><item><title>Mission Moon</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/missionmoon/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/missionmoon/</guid><description>Description A mission, had planned to land on the moon. Can you find where it planned to land on the moon and the name of the lander and rover? Flag is latitude longitude upto one decimal place.
Note: Flag format n00bz{Lander_Rover_latitude_longitude} for eg - n00bz{Examplelander_Examplerover_12.3_45.6}. Also note that flag is case sensitive! Note: Due to a quite big range of answers, to narrow down your search, use the latitude and longitude provided from this site: blog.</description></item><item><title>Pwn1</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/pwn1/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/pwn1/</guid><description>Description of the challenge Welcome to the series of 3 pwn challenges!
Author: NoobMaster
Solution We open the binary in Ghidra and instantly notice the buffer overflow on fgets. It reads 0x50 (80) bytes into a 64 bytes buffer. Given the name of the local variable local_48, it means we have 0x48 bytes until the return address. So, we have 8 bytes of the return address to work with.
void main(EVP_PKEY_CTX *param_1) { char local_48 [64]; init(param_1); puts(&amp;#34;Would you like a flag?</description></item><item><title>Pwn2</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/pwn2/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/pwn2/</guid><description>Description of the challenge There is no win function this time!
Author: NoobMaster
Solution Running checksec on the binary, we notice the lack of canary and PIE.
$ checksec pwn2 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 42 Symbols No 0 1 pwn2 When we open the binary in Ghidra, we are greeted with the following main function:</description></item><item><title>Pwn3</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/pwn3/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/pwn3/</guid><description>Description of the challenge This time you have nothing! Can you still exploit this?
Author: NoobMaster
Solution Running checksec on the binary, we notice the lack of canary and PIE, just like the ones before it.
$ checksec pwn3 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 41 Symbols No 0 1 pwn3 Open the binary in Ghidra:</description></item><item><title>RSA</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/rsa/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/rsa/</guid><description>Description of the challenge Good old RSA!
Author: NoobMaster
Solution When connecting to the remote server, we are given a ciphertext, and the public key (e, N) for it. Presumably, this ciphertext is encrypted with textbook RSA and it&amp;rsquo;s probably the flag. Knowing e = 17 for every connection, we can attempt a Hastad Broadcast attack.
Basically, by capturing x ciphertexts, encrypted with the same e, where x &amp;gt;= e, one can find the original plaintext using the Chinese Remainder Theorem.</description></item><item><title>Strings</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/strings/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/strings/</guid><description>Description of the challenge I love Strings! Do you? Let me know!
Author: NoobMaster
Solution Decompiling the binary - we can first see a clear format string vulnerability. We get to read into a buffer that then gets printed directly with printf. Perhaps we can use it to leak an address, or write to somewhere with the %n format string.
void main(EVP_PKEY_CTX *param_1) { long in_FS_OFFSET; char local_78 [104]; long local_10; local_10 = *(long *)(in_FS_OFFSET + 0x28); init(param_1); puts(&amp;#34;Do you love strings?</description></item><item><title>The Online Odyssey</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/theonlineodyssey/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/theonlineodyssey/</guid><description>Description My friend blackhat_abhinav gave me a ctf challenge and told me that the challenge is full of mystery and he wanted me to solve the mystery and get the flag. Can you help me to get the flag?
Flag format:- n00bz{fl4g_h3r3}
Solution The most important information we have is the username blackhat_abhinav so let&amp;rsquo;s start our research with this username.
When I have to work with username I really appreciate to use the following website: https://whatsmyname.</description></item><item><title>Try Hack Me</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/tryhackme/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/tryhackme/</guid><description>Description of the challenge My friend brayannoob gave me a ctf challenge and told me Try to hack me.
Author: noob_abhinav
Solution First, let&amp;rsquo;s start our research with the username brayannoob.
When I have to work with username I really appreciate to use the following website: https://whatsmyname.app/. Let&amp;rsquo;s check the results I got for the username brayannoob: When dealing with username I always start with social network such as Instagram, Twitter, Facebook and GitHub so let&amp;rsquo;s open the GitHub account we found.</description></item><item><title>Zzz</title><link>https://dothidden.xyz/ctfs/n00bzctf_2023/zzz/</link><pubDate>Sat, 10 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/n00bzctf_2023/zzz/</guid><description>Description of the challenge 3z
Author: NoobHacker
Solution This is obviously a z3 challenge. We can open the binary in Ghidra and see various constraints. Instead of solving them manually, let&amp;rsquo;s just try some angr magic. I won&amp;rsquo;t even attempt to add the constraints. I&amp;rsquo;ll just add the beginning of the flag.
#!/usr/bin/env python3 import angr import claripy import sys def is_successful(state): #Successful print stdout_output = state.posix.dumps(sys.stdout.fileno()) return b&amp;#39;You got it!</description></item><item><title>Demonic Navigation Skills</title><link>https://dothidden.xyz/ctfs/dantectf_2023/demonic_navigation_skills/</link><pubDate>Thu, 08 Jun 2023 22:42:49 +0300</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/demonic_navigation_skills/</guid><description>Description A friend told me that they are creating a new celestial network, way better than our Internet even though it is based on some long forgotten tech. Do you have the skills to find the Holy Record? Start your search at gates.hell.dantectf.
Solution We were given an ip address running a udp service. A quick internet search confirms that DNS runs on udp so we try to dig the domain.</description></item><item><title>Almost Perfect Remote Signing</title><link>https://dothidden.xyz/ctfs/dantectf_2023/almost_perfect_remote_signing/</link><pubDate>Thu, 08 Jun 2023 21:51:59 +0300</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/almost_perfect_remote_signing/</guid><description>Description I c4n&amp;rsquo;t re?d you Are_you a beacon fAom 1200 0r smthing?
Solution We were provided with a .wav file. Listening to it, the only thing you could hear was a nondescript noise. After a bit of digging for the name of the file (aprs), we find that APRS is an Automatic Position Reporting System used by hams1. It uses packet radio to send GPS tracking information among other things.</description></item><item><title>Imago Qualitatis</title><link>https://dothidden.xyz/ctfs/dantectf_2023/imago/</link><pubDate>Thu, 08 Jun 2023 15:11:49 +0300</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/imago/</guid><description>Description A wondrous electromagnetic wave was captured by a metal-stick-handed devil. &amp;ldquo;But.. What? No, not this way. Maybe, if I turn around like this&amp;hellip; Aha!&amp;rdquo;
Key observation Doing some reasearch on the file name we find out that this is a raw gqrx IQ radio file.
Solution Open the file in gqrx (link here) and play the file.
Flag DANTE{n3w_w4v35_0ld_5ch00l}</description></item><item><title>Dirty Checkerboard</title><link>https://dothidden.xyz/ctfs/dantectf_2023/dirty_checkerboard/</link><pubDate>Thu, 08 Jun 2023 14:51:29 +0300</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/dirty_checkerboard/</guid><description>Challenge Description I bought a new chessboard but every time I use it I have this feeling&amp;hellip; Like it&amp;rsquo;s dirty or something.
Key observation Notice a set of weird pixels in the bottom left side of the image.
Solution Crop the image and interpret the data as bytes.
im = Image.open(&amp;#34;./cropped_dirty.bmp&amp;#34;).tobytes() s = im.decode() print(s) Result jefotulktcya hbwdtvpbk, tog-3mi yes./ fiue calu r:caloo mDkgkst /obo ^ rnuaA_i ra/mmo ssgN0csaitg/aki eiTukh c ijg ni cEt}onkhtwiojfik{_ w ^ ^ ^ ^ ^ i thicue m!</description></item><item><title>Piedpic</title><link>https://dothidden.xyz/ctfs/dantectf_2023/piedpic/</link><pubDate>Thu, 08 Jun 2023 12:43:14 +0300</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/piedpic/</guid><description>Description Dante took many pictures of his journey to the afterlife. They contain many revelations. I&amp;rsquo;ll give you one of these pictures if you&amp;rsquo;ll give me one of yours!
Key observations Looking at the code we notice 2 things:
pixels are xored with 255 (aka bitwise reversed) for each odd bit among the 3 least significant bits of the key at that index pixels are scrambled based on $k_i$ (mod 6) Knowing this, we conclude that the relevant part of the key is a tuple $(kl_i, km_i)$, where $kl_i$ holds the 3-lsb of $k_i$ and $km_i$ holds $k_i % 6$.</description></item><item><title>Soulcode</title><link>https://dothidden.xyz/ctfs/dantectf_2023/soulcode/</link><pubDate>Mon, 05 Jun 2023 23:11:16 +0300</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/soulcode/</guid><description>Soulcode The challenge consisted of bypassing various filters to run a shellcode.
Main function decompiled bool main(void) { int iVar1; long lVar2; undefined8 *puVar3; byte bVar4; undefined8 local_208; undefined8 local_200; undefined8 local_1f8 [62]; bVar4 = 0; puts(&amp;#34;Before you leave the realm of the dead you must leave a message for posterity!&amp;#34;); setvbuf(stdin,(char *)0x0,2,0); setvbuf(stderr,(char *)0x0,2,0); setvbuf(stdout,(char *)0x0,2,0); local_208 = 0; local_200 = 0; puVar3 = local_1f8; for (lVar2 = 0x3c; lVar2 !</description></item><item><title>StangeBytes</title><link>https://dothidden.xyz/ctfs/dantectf_2023/strangebytes/</link><pubDate>Mon, 05 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/strangebytes/</guid><description>Disclaimer: This challenge was resolved after the end of the CTF, so it doesn&amp;rsquo;t count for the final ranking.
Description of the challenge I got hacked by a ransomware, and it encrypted some important files. Some crypto analyst told me they were encrypted using AES CBC, but there is something strange in them which can probably be exploited. I don&amp;rsquo;t have enough money to give the job to proper crypto analysts, could you decrypt them for me please?</description></item><item><title>Routes Mark The Spot</title><link>https://dothidden.xyz/ctfs/dantectf_2023/routesmarkthespot/</link><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/routesmarkthespot/</guid><description>Description of the challenge Aha, the little spirit says that the human became more ingenious! What a weird way to transmit something, though.
Solution We are provided with a pcap file, let&amp;rsquo;s open it with Wireshark. Let&amp;rsquo;s go trough the different packets and see if we can find something unusual into the info column.
From packet number 66 we start to see some more data in the hexdump of the packets but if we go to the packet number 88, we can see that the protocol used is IPv6 and the hexdump looks like:</description></item><item><title>Who Can Haz Flag</title><link>https://dothidden.xyz/ctfs/dantectf_2023/whocanhazflag/</link><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><guid>https://dothidden.xyz/ctfs/dantectf_2023/whocanhazflag/</guid><description>Description of the challenge A little spirit spied on this mortal transmission. He noticed that the human was after something, but what was it ?
Solution The challenge provide a Wireshark capture, let&amp;rsquo;s open it first. By the name of the challenge we can guess that the flag might be related to the ARP or DNS protocol because those protocols are used to translate a domain into IP address in the case of DNS and for ARP we send request in order to identify a device based on his IP address.</description></item><item><title>Report</title><link>https://dothidden.xyz/ctfs/stranger_case/report/</link><pubDate>Sat, 27 May 2023 23:11:16 +0300</pubDate><guid>https://dothidden.xyz/ctfs/stranger_case/report/</guid><description>Mission A guy named Eric EDURT is missing our goal is to find out what happened to him by using all open source intelligence tools available.
Sockpuppet used to investigate Please see the Sockpuppet page for more information.
Investigation Subject Details Name: Eric Surname: EDURT Time of disappearance: Night between 1st and 2nd of May 2023 Alias: eedurt Occupation: CEO at Copprethia Profile picture: Social Media Email: eric.edurt@gmail.com LinkedIn: https://fr.</description></item><item><title>Sockpuppet</title><link>https://dothidden.xyz/ctfs/stranger_case/sockpuppet/</link><pubDate>Sat, 27 May 2023 23:11:16 +0300</pubDate><guid>https://dothidden.xyz/ctfs/stranger_case/sockpuppet/</guid><description>Sockpuppet used to investigate Subject Details Name: Alexis Surname: DEBEATE Age: 41 Birthdate: 18/02/1982 Alias: Alexis DEBEATE Nationality: French Living in: Paris, France Profile picture: Social Media Facebook: https://www.facebook.com/profile.php?id=100092937765609 Instagram: https://www.instagram.com/alexisdebeate/ Email: alexis.debeate@gmail.com Twitter: https://twitter.com/ADebeate LinkedIn: https://www.linkedin.com/in/alexis-debeate-3a790a278/ Account was banned Discord: aleXbeast#5001 TikTok: https://www.tiktok.com/@alexisdebeate Other The sockpuppet has a Clash of Clans account: alexisss Background To be determined.</description></item><item><title>Network Detective</title><link>https://dothidden.xyz/ctfs/unbreakable_2023/network_detective/</link><pubDate>Wed, 24 May 2023 22:17:09 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2023/network_detective/</guid><description> Open the network-detective capture with wireshark Open the HTTP packet We know that HTTP does not encrypt data we should see the following result: The X-HERE header is an unusual header furthermore we notice that the data is quiet suspicious and looks like a ROT encryption because if we shift from 1 to right, DUG gave is CTF which is the flag format. Go to rot-cipher and enter the data string Select ROT 1 (which is equal to shift one to right) Select full ASCII table Here you go :)</description></item><item><title>Do You Hunt 2</title><link>https://dothidden.xyz/ctfs/unbreakable_2023/do_you_hunt_2/</link><pubDate>Wed, 24 May 2023 22:15:11 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2023/do_you_hunt_2/</guid><description>def convert_to_ascii(file_path): with open(file_path, &amp;#39;r&amp;#39;) as file: data = file.read() numbers = [int(line.split(&amp;#39;#&amp;#39;)[-1]) for line in data.split(&amp;#39;\n&amp;#39;) if &amp;#39;#&amp;#39; in line] ascii_chars = [chr(num) for num in numbers] result = &amp;#39;&amp;#39;.join(ascii_chars) print(result) # Provide the path to the text file file_path = &amp;#39;do-you-hunt2-final&amp;#39; convert_to_ascii(file_path)</description></item><item><title>Ipv6 Evil</title><link>https://dothidden.xyz/ctfs/unbreakable_2023/ipv6_evil/</link><pubDate>Wed, 24 May 2023 22:00:43 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2023/ipv6_evil/</guid><description> Open the ipv6Evil capture with wireshark The challenge description and title give us good hints: DNS Buffer Overflow is not for everyone ! Ipv6 evil We can deduce that we need to look to a bad ipv6 request that causes DNS buffer overflow Use the filter ipv6 and sort the result by size ( a buffer overflow packet is supposed to have a large and unusual size due to the added padding Check every result by starting from the heaviest packet Check the ASCII result of each packet you should see some unusual results with a lot of &amp;ldquo;A&amp;rdquo; Unfortunately the first one is not the right flag see image Continue to check the others By going from the heaviest to the lightest packet we notice some other unusual strings: If we concate all those strings we get: We_Ar3_N0t_th3_Same what makes sense Now do not forget to encrypt it with sha256 and now you got the flag</description></item><item><title>Hidden Wave</title><link>https://dothidden.xyz/ctfs/unbreakable_2023/hidden_wave/</link><pubDate>Wed, 24 May 2023 21:53:09 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2023/hidden_wave/</guid><description>The file looked perfectly normal and sounded perfectly normal. Extracting the LSB is quite a common technique to try and was fortunately successful.
# Use wave package (native to Python) for reading the received audio file import wave # Read file as binary stream do not forget to change the file name song = wave.open(&amp;#34;hidden-wave.wav&amp;#34;, mode=&amp;#39;rb&amp;#39;) # Convert audio to byte array frame_bytes = bytearray(list(song.readframes(song.getnframes()))) # Extract the LSB of each byte extracted = [frame_bytes[i] &amp;amp; 1 for i in range(len(frame_bytes))] # Convert byte array back to string string = &amp;#34;&amp;#34;.</description></item><item><title>Hidden Art</title><link>https://dothidden.xyz/ctfs/unbreakable_2023/hidden_art/</link><pubDate>Wed, 24 May 2023 21:44:04 +0300</pubDate><guid>https://dothidden.xyz/ctfs/unbreakable_2023/hidden_art/</guid><description>import heapq import pickle # We use a huffman tree because we have a dict whith the char frequency class Node: def __init__(self, char, freq, left_node=None, right_node=None): self.char = char self.freq = freq self.left_node = left_node self.right_node = right_node def __lt__(self, other): return self.freq &amp;lt; other.freq def generate_huffman_tree(freq_dict): # Create a priority queue from the frequency dictionary priority_queue = [Node(char, freq) for char, freq in freq_dict.items()] heapq.heapify(priority_queue) # Iteratively combine the two nodes with the lowest frequencies while len(priority_queue) &amp;gt; 1: low_node = heapq.</description></item><item><title>About</title><link>https://dothidden.xyz/about/</link><pubDate>Tue, 23 May 2023 21:16:14 +0300</pubDate><guid>https://dothidden.xyz/about/</guid><description>About the team .hidden is a community of students from the University of Bucharest, passionate about hacking and cybersecurity.
We formed the team on the 28th of April 2023, once we randomly decided to take part in a CTF competition. It all took off from there.
Our goal is to contribute to the local CTF and hacking scene by learning and sharing our experiences with students of the University, as well as anyone else that wants to join in on the fun.</description></item></channel></rss>