Skip to content

Reviewed utctf24 challenges - #134

Open
Shreycrey wants to merge 3 commits into
pwncollege:mainfrom
Shreycrey:reviewed-utctf24
Open

Reviewed utctf24 challenges#134
Shreycrey wants to merge 3 commits into
pwncollege:mainfrom
Shreycrey:reviewed-utctf24

Conversation

@Shreycrey

Copy link
Copy Markdown
Contributor

Second iteration, reviewed files

@prathamgupta36 prathamgupta36 self-assigned this Jul 23, 2025
@prathamgupta36
prathamgupta36 requested a review from Copilot July 23, 2025 04:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds reviewed files for the UTCTF 2024 challenge set, including challenge configurations, source code, documentation, and support files. The changes primarily involve adding new challenge implementations across multiple categories including crypto, forensics, web, and reverse engineering.

  • Complete UTCTF 2024 challenge suite with module configuration and individual challenge files
  • Challenge source code and supporting files for 22 different challenges
  • Documentation files including descriptions, rehosting instructions, and setup notes

Reviewed Changes

Copilot reviewed 67 out of 86 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
utctf24/module.yml Main module configuration defining all 22 challenges
utctf24/merger/merger.js Object merging functionality with command execution
utctf24/merger/app.js Express.js web application for company merger simulation
utctf24/simplesig/main RSA signature generation service with validation
utctf24/numbrrrs2/main Enhanced encryption service with key guessing game
utctf24/cookie/app Flask application for cookie clicker game
utctf24/ccv/server Credit card validation service
Various DESCRIPTION.md files Challenge descriptions and setup instructions
Various REHOST.md files Rehosting documentation for challenge deployment
Comments suppressed due to low confidence (1)

Comment thread utctf24/merger/merger.js
Comment on lines +27 to +31
cmd = secret.cmd;
}


exec(cmd, (err, stdout, stderr) => {

Copilot AI Jul 23, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code allows command execution through the secret.cmd property which can be set via prototype pollution. The merger logic allows setting arbitrary properties on objects, including proto, which could be used to modify the secret object and inject arbitrary commands.

Suggested change
cmd = secret.cmd;
}
exec(cmd, (err, stdout, stderr) => {
if (typeof secret.cmd === 'string' && /^[a-zA-Z0-9_\-./]+$/.test(secret.cmd)) {
cmd = secret.cmd; // Only allow safe commands
} else {
console.error("Invalid command in secret.cmd");
}
}
execFile(cmd, (err, stdout, stderr) => {

Copilot uses AI. Check for mistakes.
Comment thread utctf24/merger/merger.js
for (let k = 0; k < Math.min(data.attributes.length, data.values.length); k++) {

if (!(orig[data.attributes[k]] === undefined) && isObject(orig[data.attributes[k]]) && isObject(data.values[k])) {
for (const key in data.values[k]) {

Copilot AI Jul 23, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This merge logic is vulnerable to prototype pollution. It allows merging objects without checking if the attribute is 'proto' or 'constructor', which can be exploited to modify the prototype chain and affect the global secret object.

Suggested change
for (const key in data.values[k]) {
for (const key in data.values[k]) {
if (key === '__proto__' || key === 'constructor') {
continue;
}

Copilot uses AI. Check for mistakes.
Comment thread utctf24/numbrrrs/REHOST.md Outdated
Comment thread utctf24/cookie/app
app = Flask(__name__)

flag = open('/flag', 'r').read()
FLAG = "Wow, you beat me. Congrats! ", flag

Copilot AI Jul 23, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The FLAG variable is defined as a tuple instead of a string concatenation. This will cause the response to be a tuple representation instead of the intended concatenated string message.

Suggested change
FLAG = "Wow, you beat me. Congrats! ", flag
FLAG = "Wow, you beat me. Congrats! " + flag

Copilot uses AI. Check for mistakes.
Comment thread utctf24/cookie/app
except:
return "Those aren't valid clicks..."

if count >= 1000000:

Copilot AI Jul 23, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The frontend JavaScript checks for count >= 10000000 (10 million) but the backend only requires count >= 1000000 (1 million). This inconsistency could lead to confusion or unintended behavior.

Suggested change
if count >= 1000000:
if count >= 10000000:

Copilot uses AI. Check for mistakes.
@pwncollege pwncollege deleted a comment from Copilot AI Jul 23, 2025
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@alchemy1729-bot

alchemy1729-bot commented Mar 17, 2026

Copy link
Copy Markdown
Contributor

Recommended verdict: reject.

Reasoning:

  • This PR has structural merge blockers before challenge-by-challenge validation even starts.
  • It modifies unrelated existing metadata outside the new CTF tree, commits raw flag material into the repo, and mixes in extra non-runtime files while also carrying inconsistent top-level event metadata.
  • I do not recommend merging it in its current form.

Decision not final, awaiting maintainer input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants