AlpacaHack Logo
Sign InSign Up
Daily AlpacaHack

A daily CTF challenge with a fun new puzzle every day

What is Daily AlpacaHack?

We publish one simple, beginner-friendly or educational CTF challenge every day!

Join Anytime

Solve within 24 hours of release to appear on the leaderboard.

Not a Competition

Discussion with friends or AI is welcome (account sharing is prohibited).

Solution Sharing Rules

Sharing solutions is allowed only after 24 hours have passed since release.

Solve stats

0

/23

No solved challenges yet.

Sign In to view your player stats

Today's Challenge
tchentchen
True or False
Misc
Medium
21 solves
Submissions (latest 3)
arusekk

SOLVED!

Jul 22, 7:34 PM

Leaderboard

Try the first challenge

Is this your first CTF? Let's begin by tackling the first challenge released on Daily AlpacaHack.

View challenge
admin
AlpacaHack 2100
Misc
Welcome🌱
2,001 solves
Upcoming challenges reveal the , , and in advance.
Prev

Jul 2026

Next
Solved
Unsolved
Upcoming
Mon
Tue
Wed
Thu
Fri
Sat
Sun
29
tchentchen
Nano Services
Web
Medium
88 solves
30
minaminaominaminao
Super Short System Exit
Misc
Medium
83 solves
1
admin
Alpaca Nation
Misc
Welcome🌱
237 solves
2
hiikunzhiikunz
Flag is A+B
Crypto
Easy🌱
142 solves
3
tchentchen
Lucky Redirect
Web
Easy🌱
133 solves
4
hiikunzhiikunz
Renda
Rev
Medium
109 solves
5
tchentchen
IP Blocked Secret
Web
Hard
66 solves
6
minaminaominaminao
duplicate entry
Misc
Easy🌱
139 solves
7
hiikunzhiikunz
Lazy RSA
Crypto
Medium
104 solves
8
minaminaominaminao
Let's Poly1305!
Crypto
Medium
76 solves
9
shiragishiragi
private method
Misc
Easy🌱
133 solves
10
hiikunzhiikunz
secret-table-3
Web
Medium
84 solves
11
baumroll1234
A slight mistake
Pwn
Hard
69 solves
12
tan90909090tan90909090
13
baumroll1234
Redirecting to Login Page
Web
Easy🌱
143 solves
14
tchentchen
You've Got Shlex
Misc
Medium
87 solves
15
minaminaominaminao
Let's Poly1305! 2
Crypto
Hard
64 solves
16
tchentchen
Beat the Alpaca Lord
Web
Medium
89 solves
17
pppp4649pppp4649
biribiri
Crypto
Medium
85 solves
18
tchentchen
Greetings CGI
Web
Hard
69 solves
19
hiikunzhiikunz
no win func
Pwn
Hard
70 solves
20
tchentchen
Alpaca Blog
Web
Easy🌱
106 solves
21
tan90909090tan90909090
NOP Variant
Rev
Misc
Medium
64 solves
22
arkark
jinjail
Misc
Hard
36 solves
23
tchentchen
True or False
Misc
Medium
21 solves
24
Coming soon
25
minaminaominaminao
Planned topicCache
Web
Hard
26
Planned topicPython
Web
Hard
27
Planned topicHTTP
Web
Easy🌱
28
Coming soon
29
Coming soon
30
Coming soon
31
Coming soon
2
Coming soon

Want a harder challenge?

Go to B-SIDE

Writeups

Writeup for NOP Variant

umineko

ja
NOP Variant

16 hours ago

Daily AlpacaHackに挑戦するつくよみちゃん07/21/NOP Variant/tan90909090

ja

2026/07/21 16:33

nirvana

Writeup for Alpaca Blog

ja

2026/07/21 13:38

ojun

Writeup for no win func

ja

2026/07/19 15:04

kurimochi

Writeup for You've Got Shlex (shlex only)

ja

2026/07/19 05:58

nitcelcius

Writeup for You've Got Shlex

ja

2026/07/18 12:59

edwowmath

Writeup for Compile time flag checker

Rows:

vm1

Topic: Jail, JavaScriptReleased: Jun 3, 2026

109 solves
Misc
Medium4.0

by

minaminao

minaminao

https://nodejs.org/docs/latest-v26.x/api/vm.html#vm-executing-javascript

The node:vm module is not a security mechanism. Do not use it to run untrusted code.

I do not believe so

Beginner Hint 1: Challenge Overview (AI-translated)
  • If you read the distributed jail.js, you can see that the JavaScript code you input is executed with runInNewContext from node:vm.
  • Roughly speaking, runInNewContext is used as runInNewContext(code, contextObject, options). The first argument is the code to execute, the second argument is the global object visible from that code, and the third argument is the runtime options.
  • In this challenge, runInNewContext(code.toString(), {}, { timeout: 1000 }) is executed. In other words, your input code is executed in a new context, and an empty {} is passed as the global object. timeout: 1000 is a setting to stop execution that runs for too long.
  • The flag is stored in the environment variable FLAG, and in normal Node.js code, you can obtain it with process.env.FLAG. However, in this challenge, the {} passed as the second argument to runInNewContext does not contain process, so it fails with ReferenceError: process is not defined.
  • So how can you obtain FLAG?
Beginner Hint 2: Approach (AI-translated)
  • At first glance, it looks like you cannot access objects such as process, but that is not actually the case.
  • In JavaScript, when reading an object's property, if the property does not exist on the object itself, properties on the prototype chain are also searched.
  • In the vm context, focus especially on the constructor property among the properties visible from globalThis, and try investigating it.
Beginner Hint 3: A More Detailed Approach (AI-translated)
  • globalThis.constructor.constructor becomes the Function constructor, which can create functions from strings.
  • In which context is a function created with this evaluated?
vm1.tar.gz

Please sign in to submit the flag.

descriptionsolveswriteups