From 7c4ec54173eb9a0cca63088e3690d2958e05ae13 Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 1 Sep 2023 23:35:56 +0200 Subject: [PATCH] Update README.md --- DownUnderCTF 2023/blockchain/ Another Please/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DownUnderCTF 2023/blockchain/ Another Please/README.md b/DownUnderCTF 2023/blockchain/ Another Please/README.md index 0d5d30be..1c648f86 100644 --- a/DownUnderCTF 2023/blockchain/ Another Please/README.md +++ b/DownUnderCTF 2023/blockchain/ Another Please/README.md @@ -83,6 +83,12 @@ contract AnotherPlease is ERC721Enumerable { } ``` +# Analyse + +Ziel ist es alle 30 Tickets zu besitzen. Glücklicherweise kriegen wir die ersten 20 gratis, aber die letzten 10 sind teurer als wir es uns leisten können. +Die Methode ```claimFreeTicket``` prüft erst, ob noch gratis Tickets vorhanden sind, und sendet dann das Ticket und decrementiert dann den Counter. Und hier liegt die Schwachstelle: +Der Angreifer Callt schnell hintereinander die ```claimFreeTicket``` Methode. Das Übertragen der Tickets via ```_safeMint``` dauert (vermutlich eine gewisse zeit in der alle 30 If-Abfragen positiv durchlaufen werden). Wenn der Counter heruntergesetzt wird, werden wir schon alle Tickets besitzen. + # Lösung #TODO