Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 164 additions & 0 deletions _posts/2026-04-15-this-wasm-my-kind-of-web-challenge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
---
# Editing the below variables is the absolute minimum to get stuff up. Feel
# free [obliged] to add editorial niceties or strip the page if you need to
# include something more complex.
season: 23
episode: 02
layout: default
title: This WASM my kind of web challenge
# summary for social media cards. Ideal length 55 chars, max 200
summary: WASM crackme challenge from PolyPwn 2026 LabOps
tags: wasm reverse-engineering crackme
date_fr: 2026-04-15
date_long_fr: Mercredi le 15 avril 2026 18:00 à 21:00
date_en: 2026-04-15
date_long_en: Wednesday April 15th 2026 18:00 to 21:00
description_fr: >
Présentation de la track LabOps de PolyPwn 2026. L'objectif est de faire un keygen pour une application web de gestion de laboratoire compilée en WebAssembly (WASM). L'application comporte plusieurs pages, chacune nécessitant une licence différente (Bronze, Silver ou Gold). Il faut donc créer un générateur de clés capable de produire une licence valide pour chaque niveau afin d'obtenir les flags.
description_en: >
Presenting the PolyPwn 2026 LabOps track. The goal is to write a keygen for a lab management web application compiled to WebAssembly (WASM). The app has multiple pages, each requiring a different license tier (Bronze, Silver, or Gold). You'll need to build a key generator that can produce a valid license for each tier to unlock the flags.
tools_fr:
- Ghidra
- https://github.com/nneonneo/ghidra-wasm-plugin
tools_en:
- Ghidra
- https://github.com/nneonneo/ghidra-wasm-plugin
presented_by_fr: Défi présenté par [Kyle Bouchard (ptrstr)](https://github.com/ptrstr)
presented_by_en: Presented by [Kyle Bouchard (ptrstr)](https://github.com/ptrstr)
featured_img: /images/22026-04.jpg
featured_img_alt: Friendship with JS has ended, WASM is my new best friend
location: "École de Technologie Supérieure (ÉTS), local D-4007"

---

# Next edition: {{ page.date_en }}
[French version](#french)

### Season {{ page.season }} Episode {{ page.episode }}

## {{ page.title }}

The next edition of Montrehack will be held on {{ page.date_long_en }}.

![ {{ page.featured_img_alt }} ]( {{ page.featured_img }}#centered)

{{ page.description_en }}

{% if page.challenge_assets %}
{::options parse_block_html="true" /}
<div class="assets">
## Challenge Assets
{% for asset in page.challenge_assets %}
* [ {{ asset.name }} ]({{ asset.url }})
{% endfor %}
</div>
{% endif %}

{% if page.archived_assets %}
{::options parse_block_html="true" /}
<div class="archives">
## Archives
This edition is over. Here are the archived assets:
{% for asset in page.archived_assets %}
* [ {{ asset.name }} ]({{ asset.url }})
{% endfor %}
</div>
{% endif %}

## Tools and Experience Required

{% for tool in page.tools_en %}
* {{ tool }}
{% endfor %}

## Where

* {{ page.location }}
* Follow the presentation [online on Twitch](https://twitch.tv/montrehack/)
* Participate in teams or on your own [on Discord](https://discord.gg/4qfFwPX)

## When

{{ page.date_long_en | capitalize }}

## How

* Workshop style
* Bring your own laptop
* Challenges will be analyzed
* Small groups of people can work on each challenge
* Solutions to each challenge will be presented to everyone at the end of the event

## Credits

{{ page.presented_by_en }}

<a id="french"></a>

# Prochaine édition: {{ page.date_fr }}

### Saison {{ page.season }} épisode {{ page.episode }}

## {{ page.title }}

La prochaine édition de Montréhack aura lieu {{ page.date_long_fr }}.

![ {{ page.featured_img_alt }}]( {{ page.featured_img }}#centered)

{{ page.description_fr }}

{% if page.challenge_assets %}
{::options parse_block_html="true" /}
<div class="assets">
## Challenge Assets
{% for asset in page.challenge_assets %}
* [ {{ asset.name }} ]({{ asset.url }})
{% endfor %}
</div>
{% endif %}

{% if page.archived_assets %}
{::options parse_block_html="true" /}
<div class="archives">
## Les Archives
Cette édition est terminé, voici les archives:
{% for asset in page.archived_assets %}
* [ {{ asset.name }} ]({{ asset.url }})
{% endfor %}
</div>
{% endif %}

## Outils et expérience requis

{% for tool in page.tools_fr %}
* {{ tool }}
{% endfor %}

## Où

* {{ page.location }}
* Suivez la présentation [en ligne sur Twitch](https://twitch.tv/montrehack/)
* Participez seul ou en équipe [sur Discord](https://discord.gg/4qfFwPX)

## Quand

{{ page.date_long_fr | capitalize}}

## Comment

* Formule atelier
* Apportez votre ordinateur portable
* Des problèmes seront étudiés et expliqués
* Chaque problème sera analysé en petits groupes
* Les solutions seront présentées avec tout le monde à la fin de la rencontre

## Remerciements

{{ page.presented_by_fr }}

<hr/>
### Sponsors // Partenaires

[![NorthSec](/images/nsec_logo.png)](https://nsec.io/)

Interested to sponsor or present a challenge? [Contact us here](https://docs.google.com/forms/d/e/1FAIpQLSecc0vfe3pIwMJjIBCYW4G43ZwtagwVESu_qHKnglnBc3R3ww/viewform?usp=sf_link).
Binary file added images/2026-04.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading