๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸดCTF/DreamHack

DreamHack - Quiz: x86 Assembly 1

by Janger 2023. 5. 1.
728x90
๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ

end๋กœ ์ ํ”„ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋์„ ๋•Œ, 0x400000 ๋ถ€ํ„ฐ 0x400019๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์‘๋˜๋Š” ์•„์Šคํ‚ค ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์–ด๋Š ๋ฌธ์ž์—ด์ด ๋‚˜์˜ค๋Š”๊ฐ€?

[Register]
rcx = 0
rdx = 0
rsi = 0x400000
=======================
[Memory]
0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10
0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d
0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c
0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00
=======================
[code]
1: mov dl, BYTE PTR[rsi+rcx]
2: xor dl, 0x30
3: mov BYTE PTR[rsi+rcx], dl
4: inc rcx
5: cmp rcx, 0x19
6: jg end
7: jmp 1

 

์ฝ”๋“œ
#include <stdio.h>

int main()
{
    int arr[4][8] = { 
        {0x67, 0x55, 0x5c, 0x53, 0x5f, 0x5d, 0x55, 0x10},
        {0x44, 0x5f, 0x10, 0x51, 0x43, 0x43, 0x55, 0x5d},
        {0x52, 0x5c, 0x49, 0x10, 0x47, 0x5f, 0x42, 0x5c},
        {0x54, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        };

    int i = 0;

    for(i=0; i<=0x19; i++)
    {
        printf("%c", *(*arr+i)^0x30 );
    }

    return 0;
}

 

๊ฒฐ๊ณผ: 

Welcome to assembly world!
728x90
๋ฐ˜์‘ํ˜•