32C3CTF - TinyHosting (Web 250)
A PHP service that allows uploading of small files (<= 7 bytes) with arbitrary filenames within a browsable path.
A PHP service that allows uploading of small files (<= 7 bytes) with arbitrary filenames within a browsable path.
Exploit a tiny binary with an extremely customised memory mapping with an infoleak leading to libc disclosure and jump to magic shell address.
Abuse the stack smashing protector infoleak vulnerability to leak the flag.
Steal the password and TOTP token from an admin using cross-site scripting.
Remote code execution in a seccomp protected python service requiring manipulating python internals to retrieve the flag in memory.
Remote code execution with a code injection vulnerability in a Forth interpreter.
Summary: Standard byte-by-byte ECB oracle decryption.
Summary: An ARM crackme is transferred over Bluetooth. Extracting the binary allows us to apply angr to it to automatically find the flag.
A lab for school required us to design 3 examples of memory bugs that are not detected by Address Sanitizer. I thought it was a pretty informative exercise s...
Summary: The Singapore team competed at the ASEAN Cyber SEA Game 2021 organised by the ASEAN-Japan Cybersecurity Capacity Building Centre (AJCCBC) and achiev...
An off-by-one error allows an attacker to leak return codes from memcmp to determine the difference in the supplied byte and the compared byte to leak the fl...
Server-side request forgery in a PDF page printer service in PHP leading to disclosure of secrets in a server-side PHP source code.
Type juggling in PHP’s weak comparison operator (==) allows an attacker to generate passwords to an administrator account and bypass the original MD5 hashing...
Use of the X-Forwarded-For header allows an attacker to fake country of origin to collect flags.
Use the Boneh-Durfee attack on low private exponents to recover the original two prime factors comprising the private key and decrypt an encrypted flag.
Summary: Bypass the restrictions of a Python jail to gain access to a get flag function within an impossible-to-instantiate metaclass class.
Summary: An ARM crackme is transferred over Bluetooth. Extracting the binary allows us to apply angr to it to automatically find the flag.
We are given an IP address:port pair and told to bruteforce smartly.
Escape python jail.
Execute arbitrary shellcode by writing to the buffer by calculating values that provide the right values when simulating a projectile’s trajectory.
Summary: Standard byte-by-byte ECB oracle decryption.
The Cyber Defenders Discovery Camp 2015 is an introductory computer security workshop slash competition targeted at students at the JC and IHL levels. This i...
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
This was a CTF challenge solved by Hiromi in Codegate 2012.
This was a CTF challenge solved by Hiromi in Codegate 2012.
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Summary: Standard byte-by-byte ECB oracle decryption.
Summary: Applying the small subgroup attack in a pseudo Diffie Hellman key exchange scheme that does not give the public A value allows for an attacker to co...
Summary: Choosing the value of the prime modulus - 1 as the base in a pseudo Diffie Hellman key exchange scheme allows setting a shared value to 1. When this...
Summary: I played VULNCON CTF 2021 for a couple of hours and solved a few challenges. Here are the quick solutions to the few challenges that were solved.
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
Writeups for the TISC 2020 CTF organised by CSIT.
Simple challenge involving XORing.
A cookie using ECB mode encryption allows an attacker to forge admin privileges by rearranging encrypted blocks for decryption.
Analyse a given PCAP for some secret communication between Alice and Bob and determine which messages contain a valid signature.
Use the Boneh-Durfee attack on low private exponents to recover the original two prime factors comprising the private key and decrypt an encrypted flag.
Recover the IV of an AES operation by utilising imperfect knowledge of the key and encrypted output.
The flag was embedded in a message that was encoded into different number bases from ASCII.
Message encoded in a seven segment display LED format.
This is the solution script:
We didn’t solve this puzzle and submit the flag in time, but when we did… well it was a huge reminder not to overthink things.
We solved the post-patch version of this binary.
This binary is vulnerable to a buffer overflow in the strncpy function called in the main function with user supplied input. It takes in two arguments, argum...
This was more of a reversing puzzle than an exploitation one. The binary accepts a parameter as a password. It checks if the password is correct and cats the...
In this challenge, an image divided into blocks has its blocks scrambled not unlike a sliding block puzzle (http://en.wikipedia.org/wiki/Sliding_puzzle). The...
In this puzzle, you had to evaluate an equation encoded in base64 in an array structure consisting of values and operands hidden in a custom header. The obje...
This challenge required you to log in as any valid account.
This is the solution script:
Message encoded in a seven segment display LED format.
Remote code execution by injecting python code into a Python WSGI server.
Insecure direct object reference allows changing of password of another user.
We are given the following binary to reverse: elf2. (It’s a zipped file)
the solution is the md5 of the decrypted file
The CTF was really enjoyable. Really great casual atmosphere to it. Too bad we only really caught the last couple of days. Really looking forward to the next...
Fake an originating IP address from North Korea using the X-Forwarded-For header.
Use of String.match as opposed to String.equals in Java allows an attacker to recover sensitive input such as an admin username character by character with r...
Overwriting a null byte in a buffer causes printf to print sensitive struct data.
Off-by-one error allows overwrite of a null byte that allows for a struct to be completely filled with non-null bytes which tricks strlen into returning a la...
A cookie using ECB mode encryption allows an attacker to forge admin privileges by rearranging encrypted blocks for decryption.
FFmpeg is a popular free software project that develops libraries and programs for manipulating audio, video, and image data. The vulnerability exists in the...
Simple programming challenge in which you had to solve equations in different formats.
Reverse engineer a server binary to determine how to interact with it and write a client.
A vulnerability in the libprocess dependency of Mesos allows a remote attacker to cause a crash in any Mesos component that includes the library. The bug res...
A vulnerability in the libprocess dependency of Mesos allows a remote attacker to cause a crash in any Mesos component that includes the library. The bug res...
A null pointer dereference vulnerability in the GraphicsMagick DICOM image decoder allows an attacker to cause a denial-of-service condition or other unspeci...
Summary: Applying the small subgroup attack in a pseudo Diffie Hellman key exchange scheme that does not give the public A value allows for an attacker to co...
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Standard byte-by-byte ECB oracle decryption.
Summary: Typical math scripting challenge. Just providing the solution for a safeeval version to avoid insecure evaluation of untrusted inputs.
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Analysing the provided memory dump yields a hosted PNG file containing a steganographic message.
Summary: Data hdiden within a corrupt Windows registry hive contains an Base64-encoded guessable flag.
Writeups for the TISC 2020 CTF organised by CSIT.
UBIFS images are recovered from a crashed drone and the flag is included in the video of the drone’s last moments.
Extracting the private key into a PEM file from a PKCS12 file transmitted over UDP allows the investigator to decrypt an RDP session and recover some secret ...
A troll challenge that required you to transcribe a melody on a hidden area of the website.
This was a CTF challenge solved by Hiromi in Codegate 2012.
This was a CTF challenge solved by Hiromi in Codegate 2012.
Summary: A format string attack allows us to overwrite an entry in the GOT to redirect execution to a print flag function.
A heap-based buffer overread in the code responsible for printing IPTC information verbosely allows an attacker to leak sensitive information by supplying a ...
An unsafe call to strncpy in magick/describe.c causes a heap overflow when describing images with overly long directories. The vulnerable code path can be tr...
A null pointer dereference vulnerability in the GraphicsMagick DICOM image decoder allows an attacker to cause a denial-of-service condition or other unspeci...
The Dystopian Narwhals played in the HackIM 2016 CTF organised by Nullcon the last weekend and I must say, it was the most controversial ones I’ve ever exper...
It’s a disaster! Not only that these useless piles of rotten meat obfuscate all their stupid code, they have also lost our precious root password, or “Flag” ...
Some people try to fight the zombie apocalypse by selling pseudo antidote. We need the secret formula in config.php to destroy their snake oil business…
“Try solving the annoying puzzle at https://ctf.fluxfingers.net:2074/ or zombies will eat your soul!”
As time passes by and the zombie apocalypse seems to stay for a while businesses have to adapt to survive. Food store chains offer brains and biscuits for th...
Analyse a given PCAP for some secret communication between Alice and Bob and determine which messages contain a valid signature.
The CTF was really enjoyable. Really great casual atmosphere to it. Too bad we only really caught the last couple of days. Really looking forward to the next...
Note: images and files are missing in this blogpost. To solve the puzzle, we had to obtain the password to a ‘Pentagon’ site relying on Javascript authentica...
Note: images are missing in this blog post. The only piece of the puzzle we were given was an image file. The distinguishing feature for this picture is that...
In this challenge, we were given the a large amount of text in a file. The entire text may be found at the end of this blog post.
A zip file containing an ELF binary and Windows executable file was given to us. We need not care about the Windows executable as both the ELF binary and the...
In this puzzle, a C source file was given to us.
In this task, we are supposed to answer the question: “What’s the md5 of the file being transferred?”. We are given another capture file, this time containin...
We are given an objective for the packets series: “Part 1. Find the secret link in this conversation.” We have a .pcap capture file and we simply apply a fil...
We didn’t solve this puzzle and submit the flag in time, but when we did… well it was a huge reminder not to overthink things.
PPC100 is a puzzle that requires some degree of scripting. To obtain the flag, we have to add up the two large numbers given and submit the result through PO...
An unsafe call to strncpy in magick/describe.c causes a heap overflow when describing images with overly long directories. The vulnerable code path can be tr...
In 2012, the team Nandy Narwhals consisting of Hiromi and I competed at the Hack in the Box 2012 CTF in Kuala Lumpur. Our team managed a decent 3rd position ...
In 2012, the team Nandy Narwhals consisting of Hiromi and I competed at the Hack in the Box 2012 CTF in Kuala Lumpur. Our team managed a decent 3rd position ...
I participated with the NUS Greyhats in this year’s HITBGSEC CTF 2017. It was organised by the HITB Netherlands CTF team and the XCTF League crew. It ran ext...
JSON Web Tokens have no means of authenticating the header and thus can be abused to manipulate the server into verifying a forged signed message with a key ...
UBIFS images are recovered from a crashed drone and the flag is included in the video of the drone’s last moments.
Extracting the private key into a PEM file from a PKCS12 file transmitted over UDP allows the investigator to decrypt an RDP session and recover some secret ...
Uninitialised variable usage allows for reliable exploitation of a classic stack overflow on a NX and PIE enabled binary using gadgets from the vsyscall page...
The FindFirstFile() function in the Windows API can cause odd behaviour in PHP applications running on Windows. We leverage this to leak information about th...
Arbitrary shell commands can be created by using only punctuation in a service that filters all characters except for punctuation.
Using a format string attack on a remote server, an attacker can leverage certain data structures present in a running Linux process to ascertain key address...
An exposed Apache JServ Protocol server allows an attacker to proxy requests to Tomcat server running Jolokia. The Jolokia instance allows the attacker to cr...
An exposed Kubelets port in a vulnerable deployment allows an attacker to run commands without authentication remotely within containers.
Directory contents are hidden with a mount.
Execute arbitrary non-alphanumeric ruby code with length limitations.
Summary: Three different individual messages are encoded within HTML via their classes and their styled visibilities.
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...
Summary: Exploit log4j vulnerability to leak environment variables.
Summary: Choosing the value of the prime modulus - 1 as the base in a pseudo Diffie Hellman key exchange scheme allows setting a shared value to 1. When this...
Summary: Sagemath contains sinks that allow for the arbitrary execution of Python code when converting from user input to math objects.
Summary: An I2C trace of a probed 16x2 LCD screen is provided in which credentials containing a usernames, passwords, and a SecurID key can be extracted.
A heap-based buffer overread in the code responsible for printing IPTC information verbosely allows an attacker to leak sensitive information by supplying a ...
A vulnerability in mutools PDF parsing functionality allows an attacker to write controlled data to an arbitrary location in memory due to an integer overflo...
Summary: Malformed IEEE 802.11 RSN tags within select beacon frames are used as a means of encoding hidden data.
Summary: An I2C trace of a probed 16x2 LCD screen is provided in which credentials containing a usernames, passwords, and a SecurID key can be extracted.
Summary: An ARM crackme is transferred over Bluetooth. Extracting the binary allows us to apply angr to it to automatically find the flag.
Summary: Exploit log4j vulnerability to leak environment variables.
Summary: An I2C trace of a probed 16x2 LCD screen is provided in which credentials containing a usernames, passwords, and a SecurID key can be extracted.
Summary: Exploit log4j vulnerability to leak environment variables.
Summary: Provide an image that satisfies an image classifier to obtain the flag.
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: Control of the size parameter to malloc and a subsequent lack of checking that the returned pointer is not 0 leads to an arbitrary null byte write t...
Summary: Analysing the provided memory dump yields a hosted PNG file containing a steganographic message.
A vulnerability in the libprocess dependency of Mesos allows a remote attacker to cause a crash in any Mesos component that includes the library. The bug res...
A vulnerability in the libprocess dependency of Mesos allows a remote attacker to cause a crash in any Mesos component that includes the library. The bug res...
Summary: Bypass the restrictions of a Python jail to gain access to a get flag function within an impossible-to-instantiate metaclass class.
Javascript jail challenge that filters most Javascript special symbols and alphabets.
Multiple vulnerabilties involving formats strings and unsafe threaded access to shared variables in a 32 bit ELF binary allows an attacker to obtain remote c...
Exploiting the same ‘vulnerable’ binary on three different architectures: x86, ARM, MIPS.
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Typical math scripting challenge. Just providing the solution for a safeeval version to avoid insecure evaluation of untrusted inputs.
Summary: Exploit log4j vulnerability to leak environment variables.
Summary: Sagemath contains sinks that allow for the arbitrary execution of Python code when converting from user input to math objects.
Summary: I played VULNCON CTF 2021 for a couple of hours and solved a few challenges. Here are the quick solutions to the few challenges that were solved.
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
Summary: Bypass the restrictions of a Python jail to gain access to a get flag function within an impossible-to-instantiate metaclass class.
Summary: Three different individual messages are encoded within HTML via their classes and their styled visibilities.
Summary: Provide an image that satisfies an image classifier to obtain the flag.
Arbitrary shell commands can be created by using only punctuation in a service that filters all characters except for punctuation.
Remote code execution in a seccomp protected python service requiring manipulating python internals to retrieve the flag in memory.
Execute arbitrary non-alphanumeric ruby code with length limitations.
Use of the X-Forwarded-For header allows an attacker to fake country of origin to collect flags.
Simulated shell environment lets you pretend to be Hugh Jackman in Swordfish.
The challenge site returns a HTTP response containing an SVG. The HTTP response is reversed.
Sanity check challenge.
This is a stolen application of super-duper payment system. But this is broken piece of cake, completely broken =(
Find the key.
Simple ruby jail challenge with a failing blacklist that deletes common methods that allow for arbitrary command execution.
A vulnerability in mutools PDF parsing functionality allows an attacker to write controlled data to an arbitrary location in memory due to an integer overflo...
In this task, we are supposed to answer the question: “What’s the md5 of the file being transferred?”. We are given another capture file, this time containin...
We are given an objective for the packets series: “Part 1. Find the secret link in this conversation.” We have a .pcap capture file and we simply apply a fil...
Summary: Control of the size parameter to malloc and a subsequent lack of checking that the returned pointer is not 0 leads to an arbitrary null byte write t...
A vulnerability in mutools PDF parsing functionality allows an attacker to write controlled data to an arbitrary location in memory due to an integer overflo...
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...
Find the key.
Alien Technologies.
Play with this amazing calculator: calc.challenges.polictf.it:4000
Retrieve the key.
Fake a valid cake object containing arbitrary ingredients to a bakery service by modifying decompiled Java bytecode and resigning the JAR with spoofed creden...
A troll challenge that required you to transcribe a melody on a hidden area of the website.
Dystopian Narwhals participated in PoliCTF 2015, and it was a lot of fun. The challenges were challenging, yet engaging and we ended up with a score of 1258 ...
Simulated shell environment lets you pretend to be Hugh Jackman in Swordfish.
Remote prolog application to solve the Tower of Hanoi problem is vulnerable to remote code execution by injecting Prolog code.
Simple challenge involving XORing.
We are given an IP address:port pair and told to bruteforce smartly.
Simple programming challenge in which you had to solve equations in different formats.
PPC100 is a puzzle that requires some degree of scripting. To obtain the flag, we have to add up the two large numbers given and submit the result through PO...
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: In this two part challenge, flawed filename logic allows an attacker to write arbitrary Python files that are executed as a CGI script. Once the att...
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Summary: Control of the size parameter to malloc and a subsequent lack of checking that the returned pointer is not 0 leads to an arbitrary null byte write t...
Summary: I played VULNCON CTF 2021 for a couple of hours and solved a few challenges. Here are the quick solutions to the few challenges that were solved.
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
Summary: A format string attack allows us to overwrite an entry in the GOT to redirect execution to a print flag function.
Writeups for the TISC 2020 CTF organised by CSIT.
Escape python jail.
Execute arbitrary shellcode by writing to the buffer by calculating values that provide the right values when simulating a projectile’s trajectory.
Javascript jail challenge that filters most Javascript special symbols and alphabets.
Multiple vulnerabilties involving formats strings and unsafe threaded access to shared variables in a 32 bit ELF binary allows an attacker to obtain remote c...
Exploiting the same ‘vulnerable’ binary on three different architectures: x86, ARM, MIPS.
Using a format string attack on a remote server, an attacker can leverage certain data structures present in a running Linux process to ascertain key address...
This writeup describes my solution to an assignment for school requiring us to exploit a classic buffer overflow to gain a shell using return-to-libc techniq...
Simple stack overflow with a statically compiled binary can be exploited with a generated execve ROP chain. The ROP chain has to be split up into multiple st...
Uninitialised variable usage allows for reliable exploitation of a classic stack overflow on a NX and PIE enabled binary using gadgets from the vsyscall page...
Overwriting a null byte in a buffer causes printf to print sensitive struct data.
Off-by-one error allows overwrite of a null byte that allows for a struct to be completely filled with non-null bytes which tricks strlen into returning a la...
Exploit a tiny binary with an extremely customised memory mapping with an infoleak leading to libc disclosure and jump to magic shell address.
Abuse the stack smashing protector infoleak vulnerability to leak the flag.
Remote code execution with a code injection vulnerability in a Forth interpreter.
An off-by-one error allows an attacker to leak return codes from memcmp to determine the difference in the supplied byte and the compared byte to leak the fl...
Fake a valid cake object containing arbitrary ingredients to a bakery service by modifying decompiled Java bytecode and resigning the JAR with spoofed creden...
Remote prolog application to solve the Tower of Hanoi problem is vulnerable to remote code execution by injecting Prolog code.
cat flag on port 2222 at qiwictf2014.ru
Alien Technologies.
Play with this amazing calculator: calc.challenges.polictf.it:4000
Retrieve the key.
We solved the post-patch version of this binary.
This binary is vulnerable to a buffer overflow in the strncpy function called in the main function with user supplied input. It takes in two arguments, argum...
This was more of a reversing puzzle than an exploitation one. The binary accepts a parameter as a password. It checks if the password is correct and cats the...
Summary: Bypass the restrictions of a Python jail to gain access to a get flag function within an impossible-to-instantiate metaclass class.
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
This is a stolen application of super-duper payment system. But this is broken piece of cake, completely broken =(
cat flag on port 2222 at qiwictf2014.ru
Summary: Sagemath contains sinks that allow for the arbitrary execution of Python code when converting from user input to math objects.
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...
Summary: Data hdiden within a corrupt Windows registry hive contains an Base64-encoded guessable flag.
This writeup describes my solution to an assignment for school requiring us to exploit a classic buffer overflow to gain a shell using return-to-libc techniq...
Summary: I played VULNCON CTF 2021 for a couple of hours and solved a few challenges. Here are the quick solutions to the few challenges that were solved.
Writeups for the TISC 2020 CTF organised by CSIT.
Simple crackme style binary solved with a simple angr script.
Reverse engineer a server binary to determine how to interact with it and write a client.
A crack me that decrypts the password into a wide length string in memory.
Simple sanity check reversing challenge with flag in strings.
We are given the following binary to reverse: elf2. (It’s a zipped file)
We were given a x86-64 Windows PE binary to reverse.
A zip file containing an ELF binary and Windows executable file was given to us. We need not care about the Windows executable as both the ELF binary and the...
In this puzzle, a C source file was given to us.
The Dystopian Narwhals played in the HackIM 2016 CTF organised by Nullcon the last weekend and I must say, it was the most controversial ones I’ve ever exper...
Summary: In this two part challenge, flawed filename logic allows an attacker to write arbitrary Python files that are executed as a CGI script. Once the att...
Summary: Sagemath contains sinks that allow for the arbitrary execution of Python code when converting from user input to math objects.
The NUS Greyhats played in the Singapore Cyber Conquest 2017 held at the GovWare 2017 conference as part of the Singapore International Cyber week. Two of ou...
Using the SQL injection vulnerability to write a PHP file to the disk and executing it with a local file inclusion vulnerability gives remote code execution.
Standard SQL injection challenge in which dumping out the data in the database reveals the flag.
Loose comparisons in PHP allow an attacker to bypass authentication.
Simple crackme style binary solved with a simple angr script.
Simple ruby jail challenge with a failing blacklist that deletes common methods that allow for arbitrary command execution.
Simple stack overflow with a statically compiled binary can be exploited with a generated execve ROP chain. The ROP chain has to be split up into multiple st...
Reading, writing, and some in-between.
A new tutorial series to teach useful programming skills for CTFs.
Sanity check challenge.
The flag was embedded in a message that was encoded into different number bases from ASCII.
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Summary: Standard byte-by-byte ECB oracle decryption.
Summary: Control of the size parameter to malloc and a subsequent lack of checking that the returned pointer is not 0 leads to an arbitrary null byte write t...
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Applying the small subgroup attack in a pseudo Diffie Hellman key exchange scheme that does not give the public A value allows for an attacker to co...
Summary: Typical math scripting challenge. Just providing the solution for a safeeval version to avoid insecure evaluation of untrusted inputs.
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Summary: Standard byte-by-byte ECB oracle decryption.
Summary: Control of the size parameter to malloc and a subsequent lack of checking that the returned pointer is not 0 leads to an arbitrary null byte write t...
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Applying the small subgroup attack in a pseudo Diffie Hellman key exchange scheme that does not give the public A value allows for an attacker to co...
Summary: Typical math scripting challenge. Just providing the solution for a safeeval version to avoid insecure evaluation of untrusted inputs.
Summary: The Singapore team competed at the ASEAN Cyber SEA Game 2021 organised by the ASEAN-Japan Cybersecurity Capacity Building Centre (AJCCBC) and achiev...
Summary: Applying the small subgroup attack in a pseudo Diffie Hellman key exchange scheme that does not give the public A value allows for an attacker to co...
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: Our team achieved third place in the GovTech organised STACK 2020 competition.
Summary: Analysing the provided memory dump yields a hosted PNG file containing a steganographic message.
Summary: Malformed IEEE 802.11 RSN tags within select beacon frames are used as a means of encoding hidden data.
Summary: An I2C trace of a probed 16x2 LCD screen is provided in which credentials containing a usernames, passwords, and a SecurID key can be extracted.
Summary: An ARM crackme is transferred over Bluetooth. Extracting the binary allows us to apply angr to it to automatically find the flag.
Summary: Three different individual messages are encoded within HTML via their classes and their styled visibilities.
Summary: Provide an image that satisfies an image classifier to obtain the flag.
Summary: Data hdiden within a corrupt Windows registry hive contains an Base64-encoded guessable flag.
Summary: A format string attack allows us to overwrite an entry in the GOT to redirect execution to a print flag function.
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: Analysing the provided memory dump yields a hosted PNG file containing a steganographic message.
Directory contents are hidden with a mount.
the solution is the md5 of the decrypted file
The only steganography challenge in TKBCTF4 and its only worth 100 points.
Note: images are missing in this blog post. The only piece of the puzzle we were given was an image file. The distinguishing feature for this picture is that...
In this challenge, we were given the a large amount of text in a file. The entire text may be found at the end of this blog post.
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
The Cyber Defenders Discovery Camp 2015 is an introductory computer security workshop slash competition targeted at students at the JC and IHL levels. This i...
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: In this two part challenge, flawed filename logic allows an attacker to write arbitrary Python files that are executed as a CGI script. Once the att...
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: In this two part challenge, flawed filename logic allows an attacker to write arbitrary Python files that are executed as a CGI script. Once the att...
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
Writeups for the TISC 2020 CTF organised by CSIT.
First Javascript challenge released out of 2 Javascript challenges.
The only steganography challenge in TKBCTF4 and its only worth 100 points.
We were given a x86-64 Windows PE binary to reverse.
Second javascript challenge for the CTF. Similar in concept to the previous javascript challenge, rand, you are given a Sandboxed node.js REPL to play with.
Recover the IV of an AES operation by utilising imperfect knowledge of the key and encrypted output.
We are given an image of TV5 Monde.
Reading, writing, and some in-between.
A new tutorial series to teach useful programming skills for CTFs.
Summary: I played VULNCON CTF 2021 for a couple of hours and solved a few challenges. Here are the quick solutions to the few challenges that were solved.
A heap-based buffer overread in the code responsible for printing IPTC information verbosely allows an attacker to leak sensitive information by supplying a ...
An unsafe call to strncpy in magick/describe.c causes a heap overflow when describing images with overly long directories. The vulnerable code path can be tr...
A vulnerability in mutools PDF parsing functionality allows an attacker to write controlled data to an arbitrary location in memory due to an integer overflo...
A vulnerability in the libprocess dependency of Mesos allows a remote attacker to cause a crash in any Mesos component that includes the library. The bug res...
A vulnerability in the libprocess dependency of Mesos allows a remote attacker to cause a crash in any Mesos component that includes the library. The bug res...
A null pointer dereference vulnerability in the GraphicsMagick DICOM image decoder allows an attacker to cause a denial-of-service condition or other unspeci...
This writeup describes my solution to an assignment for school requiring us to exploit a classic buffer overflow to gain a shell using return-to-libc techniq...
A lab for school required us to design 3 examples of memory bugs that are not detected by Address Sanitizer. I thought it was a pretty informative exercise s...
FFmpeg is a popular free software project that develops libraries and programs for manipulating audio, video, and image data. The vulnerability exists in the...
We are given an image of TV5 Monde.
The challenge site returns a HTTP response containing an SVG. The HTTP response is reversed.
We are given an IP address:port pair and told to bruteforce smartly.
Summary: In this two part challenge, flawed filename logic allows an attacker to write arbitrary Python files that are executed as a CGI script. Once the att...
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
The FindFirstFile() function in the Windows API can cause odd behaviour in PHP applications running on Windows. We leverage this to leak information about th...
An exposed Apache JServ Protocol server allows an attacker to proxy requests to Tomcat server running Jolokia. The Jolokia instance allows the attacker to cr...
An exposed Kubelets port in a vulnerable deployment allows an attacker to run commands without authentication remotely within containers.
Using the SQL injection vulnerability to write a PHP file to the disk and executing it with a local file inclusion vulnerability gives remote code execution.
Standard SQL injection challenge in which dumping out the data in the database reveals the flag.
Loose comparisons in PHP allow an attacker to bypass authentication.
JSON Web Tokens have no means of authenticating the header and thus can be abused to manipulate the server into verifying a forged signed message with a key ...
Fake an originating IP address from North Korea using the X-Forwarded-For header.
Use of String.match as opposed to String.equals in Java allows an attacker to recover sensitive input such as an admin username character by character with r...
PHP local file inclusion vulnerability leads to source code disclosure revealing python code vulnerable to a hash extension attack allowing an attacker to fa...
A PHP service that allows uploading of small files (<= 7 bytes) with arbitrary filenames within a browsable path.
Steal the password and TOTP token from an admin using cross-site scripting.
Server-side request forgery in a PDF page printer service in PHP leading to disclosure of secrets in a server-side PHP source code.
Type juggling in PHP’s weak comparison operator (==) allows an attacker to generate passwords to an administrator account and bypass the original MD5 hashing...
Remote code execution by injecting python code into a Python WSGI server.
Insecure direct object reference allows changing of password of another user.
First Javascript challenge released out of 2 Javascript challenges.
Second javascript challenge for the CTF. Similar in concept to the previous javascript challenge, rand, you are given a Sandboxed node.js REPL to play with.
In this challenge, an image divided into blocks has its blocks scrambled not unlike a sliding block puzzle (http://en.wikipedia.org/wiki/Sliding_puzzle). The...
In this puzzle, you had to evaluate an equation encoded in base64 in an array structure consisting of values and operands hidden in a custom header. The obje...
This challenge required you to log in as any valid account.
It’s a disaster! Not only that these useless piles of rotten meat obfuscate all their stupid code, they have also lost our precious root password, or “Flag” ...
Some people try to fight the zombie apocalypse by selling pseudo antidote. We need the secret formula in config.php to destroy their snake oil business…
“Try solving the annoying puzzle at https://ctf.fluxfingers.net:2074/ or zombies will eat your soul!”
As time passes by and the zombie apocalypse seems to stay for a while businesses have to adapt to survive. Food store chains offer brains and biscuits for th...
Note: images and files are missing in this blogpost. To solve the puzzle, we had to obtain the password to a ‘Pentagon’ site relying on Javascript authentica...
We’ve moved from our old Wordpress blog to a new one hosted on Github Pages powered by Jekyll and Minimal Mistakes!
The Cyber Defenders Discovery Camp 2015 is an introductory computer security workshop slash competition targeted at students at the JC and IHL levels. This i...
Reading, writing, and some in-between.
A new tutorial series to teach useful programming skills for CTFs.
Nandy Narwhals gets a new look! We should be putting out tutorials in addition to our write-ups very soon!
Back in May 2012, the first post by Hiromi was “NANDNANDNANDNAND”.
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Malformed IEEE 802.11 RSN tags within select beacon frames are used as a means of encoding hidden data.
Summary: A minimal binary with only the read libc function and containing a standard stack overflow can be exploited by leveraging a common add-what-where ga...
Summary: An ELF binary contains functionality to generate a ‘hashed’ identifier from two bytes of memory at an offset specified by the user. This ‘hashed’ id...
Summary: In this two part challenge, flawed filename logic allows an attacker to write arbitrary Python files that are executed as a CGI script. Once the att...
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Summary: Standard byte-by-byte ECB oracle decryption.
Summary: Control of the size parameter to malloc and a subsequent lack of checking that the returned pointer is not 0 leads to an arbitrary null byte write t...
Summary: A dump of a Windows user’s AppData containing Google Chrome library data files and Windows DPAPI master key files can be used in conjunction with th...
Summary: Applying the small subgroup attack in a pseudo Diffie Hellman key exchange scheme that does not give the public A value allows for an attacker to co...
Summary: Typical math scripting challenge. Just providing the solution for a safeeval version to avoid insecure evaluation of untrusted inputs.
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...
Summary: Exploit log4j vulnerability to leak environment variables.
Summary: Choosing the value of the prime modulus - 1 as the base in a pseudo Diffie Hellman key exchange scheme allows setting a shared value to 1. When this...
Summary: Sagemath contains sinks that allow for the arbitrary execution of Python code when converting from user input to math objects.
Summary: I played VULNCON CTF 2021 for a couple of hours and solved a few challenges. Here are the quick solutions to the few challenges that were solved.
Summary: The Singapore team competed at the ASEAN Cyber SEA Game 2021 organised by the ASEAN-Japan Cybersecurity Capacity Building Centre (AJCCBC) and achiev...
This challenge was created for The InfoSecurity Challenge (TISC) 2021 organised by the Centre for Strategic Infocomm Technologies (CSIT). It was the 9th leve...
Summary: Bypass the restrictions of a Python jail to gain access to a get flag function within an impossible-to-instantiate metaclass class.
Summary: Our team achieved third place in the GovTech organised STACK 2020 competition.
Summary: Analysing the provided memory dump yields a hosted PNG file containing a steganographic message.
Summary: Malformed IEEE 802.11 RSN tags within select beacon frames are used as a means of encoding hidden data.
Summary: An I2C trace of a probed 16x2 LCD screen is provided in which credentials containing a usernames, passwords, and a SecurID key can be extracted.
Summary: An ARM crackme is transferred over Bluetooth. Extracting the binary allows us to apply angr to it to automatically find the flag.
Summary: Three different individual messages are encoded within HTML via their classes and their styled visibilities.
Summary: Provide an image that satisfies an image classifier to obtain the flag.
Summary: Data hdiden within a corrupt Windows registry hive contains an Base64-encoded guessable flag.
Summary: A format string attack allows us to overwrite an entry in the GOT to redirect execution to a print flag function.
Writeups for the TISC 2020 CTF organised by CSIT.
Escape python jail.
Execute arbitrary shellcode by writing to the buffer by calculating values that provide the right values when simulating a projectile’s trajectory.
Javascript jail challenge that filters most Javascript special symbols and alphabets.
Multiple vulnerabilties involving formats strings and unsafe threaded access to shared variables in a 32 bit ELF binary allows an attacker to obtain remote c...
Exploiting the same ‘vulnerable’ binary on three different architectures: x86, ARM, MIPS.
The FindFirstFile() function in the Windows API can cause odd behaviour in PHP applications running on Windows. We leverage this to leak information about th...
Arbitrary shell commands can be created by using only punctuation in a service that filters all characters except for punctuation.
Using a format string attack on a remote server, an attacker can leverage certain data structures present in a running Linux process to ascertain key address...
An exposed Apache JServ Protocol server allows an attacker to proxy requests to Tomcat server running Jolokia. The Jolokia instance allows the attacker to cr...
An exposed Kubelets port in a vulnerable deployment allows an attacker to run commands without authentication remotely within containers.
The NUS Greyhats played in the Singapore Cyber Conquest 2017 held at the GovWare 2017 conference as part of the Singapore International Cyber week. Two of ou...
Using the SQL injection vulnerability to write a PHP file to the disk and executing it with a local file inclusion vulnerability gives remote code execution.
Standard SQL injection challenge in which dumping out the data in the database reveals the flag.
Loose comparisons in PHP allow an attacker to bypass authentication.
Simple crackme style binary solved with a simple angr script.
Simple ruby jail challenge with a failing blacklist that deletes common methods that allow for arbitrary command execution.
Simple stack overflow with a statically compiled binary can be exploited with a generated execve ROP chain. The ROP chain has to be split up into multiple st...
I participated with the NUS Greyhats in this year’s HITBGSEC CTF 2017. It was organised by the HITB Netherlands CTF team and the XCTF League crew. It ran ext...
JSON Web Tokens have no means of authenticating the header and thus can be abused to manipulate the server into verifying a forged signed message with a key ...
UBIFS images are recovered from a crashed drone and the flag is included in the video of the drone’s last moments.
Extracting the private key into a PEM file from a PKCS12 file transmitted over UDP allows the investigator to decrypt an RDP session and recover some secret ...
Uninitialised variable usage allows for reliable exploitation of a classic stack overflow on a NX and PIE enabled binary using gadgets from the vsyscall page...
Fake an originating IP address from North Korea using the X-Forwarded-For header.
Use of String.match as opposed to String.equals in Java allows an attacker to recover sensitive input such as an admin username character by character with r...
Overwriting a null byte in a buffer causes printf to print sensitive struct data.
Off-by-one error allows overwrite of a null byte that allows for a struct to be completely filled with non-null bytes which tricks strlen into returning a la...
A cookie using ECB mode encryption allows an attacker to forge admin privileges by rearranging encrypted blocks for decryption.
PHP local file inclusion vulnerability leads to source code disclosure revealing python code vulnerable to a hash extension attack allowing an attacker to fa...
A PHP service that allows uploading of small files (<= 7 bytes) with arbitrary filenames within a browsable path.
Exploit a tiny binary with an extremely customised memory mapping with an infoleak leading to libc disclosure and jump to magic shell address.
Abuse the stack smashing protector infoleak vulnerability to leak the flag.
Steal the password and TOTP token from an admin using cross-site scripting.
Remote code execution in a seccomp protected python service requiring manipulating python internals to retrieve the flag in memory.
Remote code execution with a code injection vulnerability in a Forth interpreter.
Analyse a given PCAP for some secret communication between Alice and Bob and determine which messages contain a valid signature.
Directory contents are hidden with a mount.
Execute arbitrary non-alphanumeric ruby code with length limitations.
An off-by-one error allows an attacker to leak return codes from memcmp to determine the difference in the supplied byte and the compared byte to leak the fl...
Server-side request forgery in a PDF page printer service in PHP leading to disclosure of secrets in a server-side PHP source code.
Type juggling in PHP’s weak comparison operator (==) allows an attacker to generate passwords to an administrator account and bypass the original MD5 hashing...
Use of the X-Forwarded-For header allows an attacker to fake country of origin to collect flags.
Use the Boneh-Durfee attack on low private exponents to recover the original two prime factors comprising the private key and decrypt an encrypted flag.
Recover the IV of an AES operation by utilising imperfect knowledge of the key and encrypted output.
Fake a valid cake object containing arbitrary ingredients to a bakery service by modifying decompiled Java bytecode and resigning the JAR with spoofed creden...
A troll challenge that required you to transcribe a melody on a hidden area of the website.
Dystopian Narwhals participated in PoliCTF 2015, and it was a lot of fun. The challenges were challenging, yet engaging and we ended up with a score of 1258 ...
Simulated shell environment lets you pretend to be Hugh Jackman in Swordfish.
Remote prolog application to solve the Tower of Hanoi problem is vulnerable to remote code execution by injecting Prolog code.
Simple challenge involving XORing.
We are given an image of TV5 Monde.
The challenge site returns a HTTP response containing an SVG. The HTTP response is reversed.
We are given an IP address:port pair and told to bruteforce smartly.
Simple programming challenge in which you had to solve equations in different formats.
Reverse engineer a server binary to determine how to interact with it and write a client.
Sanity check challenge.
The flag was embedded in a message that was encoded into different number bases from ASCII.
A crack me that decrypts the password into a wide length string in memory.
Simple sanity check reversing challenge with flag in strings.
Message encoded in a seven segment display LED format.
Remote code execution by injecting python code into a Python WSGI server.
Insecure direct object reference allows changing of password of another user.
We are given the following binary to reverse: elf2. (It’s a zipped file)
the solution is the md5 of the decrypted file
This is a stolen application of super-duper payment system. But this is broken piece of cake, completely broken =(
cat flag on port 2222 at qiwictf2014.ru
First Javascript challenge released out of 2 Javascript challenges.
The only steganography challenge in TKBCTF4 and its only worth 100 points.
We were given a x86-64 Windows PE binary to reverse.
Second javascript challenge for the CTF. Similar in concept to the previous javascript challenge, rand, you are given a Sandboxed node.js REPL to play with.
Find the key.
Alien Technologies.
Play with this amazing calculator: calc.challenges.polictf.it:4000
Retrieve the key.
We solved the post-patch version of this binary.
This binary is vulnerable to a buffer overflow in the strncpy function called in the main function with user supplied input. It takes in two arguments, argum...
This was more of a reversing puzzle than an exploitation one. The binary accepts a parameter as a password. It checks if the password is correct and cats the...
In this challenge, an image divided into blocks has its blocks scrambled not unlike a sliding block puzzle (http://en.wikipedia.org/wiki/Sliding_puzzle). The...
In this puzzle, you had to evaluate an equation encoded in base64 in an array structure consisting of values and operands hidden in a custom header. The obje...
This challenge required you to log in as any valid account.
This is the solution script:
It’s a disaster! Not only that these useless piles of rotten meat obfuscate all their stupid code, they have also lost our precious root password, or “Flag” ...
Some people try to fight the zombie apocalypse by selling pseudo antidote. We need the secret formula in config.php to destroy their snake oil business…
“Try solving the annoying puzzle at https://ctf.fluxfingers.net:2074/ or zombies will eat your soul!”
As time passes by and the zombie apocalypse seems to stay for a while businesses have to adapt to survive. Food store chains offer brains and biscuits for th...
The CTF was really enjoyable. Really great casual atmosphere to it. Too bad we only really caught the last couple of days. Really looking forward to the next...
Note: images and files are missing in this blogpost. To solve the puzzle, we had to obtain the password to a ‘Pentagon’ site relying on Javascript authentica...
Note: images are missing in this blog post. The only piece of the puzzle we were given was an image file. The distinguishing feature for this picture is that...
In this challenge, we were given the a large amount of text in a file. The entire text may be found at the end of this blog post.
A zip file containing an ELF binary and Windows executable file was given to us. We need not care about the Windows executable as both the ELF binary and the...
In this puzzle, a C source file was given to us.
In this task, we are supposed to answer the question: “What’s the md5 of the file being transferred?”. We are given another capture file, this time containin...
We are given an objective for the packets series: “Part 1. Find the secret link in this conversation.” We have a .pcap capture file and we simply apply a fil...
We didn’t solve this puzzle and submit the flag in time, but when we did… well it was a huge reminder not to overthink things.
PPC100 is a puzzle that requires some degree of scripting. To obtain the flag, we have to add up the two large numbers given and submit the result through PO...
This was a CTF challenge solved by Hiromi in Codegate 2012.
This was a CTF challenge solved by Hiromi in Codegate 2012.
The CTF was really enjoyable. Really great casual atmosphere to it. Too bad we only really caught the last couple of days. Really looking forward to the next...
PHP local file inclusion vulnerability leads to source code disclosure revealing python code vulnerable to a hash extension attack allowing an attacker to fa...
Summary: An insecurely implemented Python native library allows for an attacker to exfiltrate the XOR key used to ‘encrypt’ arbitrary data as well as contain...
Steal the password and TOTP token from an admin using cross-site scripting.
Summary: The PHP function realpath can be tricked to allow other protocol wrappers to be used in readfile by specially crafting the directories in an unzippe...