어셈블리어란?
0과 1로 이루어진 기계어와 1대1로 대응되는 명령어로 이루어진 저급언어
어셈블리어 명령어 종류
1. PUSH
: 스택에 값 저장
형식 : PUSH [OPERAND]
2. POP
: 스택 맨 위에 있는 값을 가져오고, 삭제
형식 : POP [OPERAND]
3. MOV
: src의 값을 dest에 넣어주는 역할
형식 : MOV [dest], [src]
ex) MOV EAX, 1 ------> 1을 EAX에 저장
4. LEA
: src주소를 dest에 넣어주는 역할
형식 : LEA [dest], [src]
5. INC
: 값을 1씩 증가
형식 : INC [OPERAND]
6. DEC
: 값을 1씩 감소
형식 : INC [OPERAND]
7. CALL
: 함수를 호출하는 역할. 복귀할 주소를 PUSH 후 함수로 이동
형식 : CALL [Address]
8. RET
: CALL로 호출된 함수 종료 후 CALL 수행 시 스택에 저장했던 복귀 주소로 돌아옴.
형식 : ret
9. LEA
: 지정한 주소값을 가져오는 명령어로, 주로 값을 가져와야 하는 경우에 사용됨.
형식 : lea eax, [ebx] -------> ebx 안의 숫자를 eax에 복사
이제 문제에서 봤던 main함수를 분석해보자.

endr64 : 실행 시작점을 알림
push rbp : rbp를 스택에 저장
mov rbp, rsp : rsp를 rbp에 저장
mov edx, 0x3e9 : edx에 0x3e9를 저장
mov esi, 0x3e9 : esi에 0x3e9를 저장
mov edi, 0x3e9 : edi에 0x3e9를 저장
mov eax, 0x0 : eax에 0x0을 저장
call 1080 <setresgid@plt> : setresgid함수 호출.
lea rax, [rip+0xe53] : rip에서 0xe53만큼 떨어진 곳의 값을 rax안에 저장.
mov rdi, rax : rdi에 rax 값을 저장
call 1090 <system@plt> : system함수 호출
lea rax, [rip+0xe4a] : rip에서 0xe4a만큼 떨어져있는 값을 rax에 저장
mov rdi, rax : rdi에 rax 값을 저장
call 1070 <puts@plt> : puts함수 호출
mov eax, 0x0 : eax에 0x0저장
pop rbp : 스택에서 rbp 가져오고 삭제
ret : 위에서 가져온 위치로 이동.
'SWUFORCE > 워게임' 카테고리의 다른 글
| [Dreamhack]My Nervous PPT (1) | 2026.04.28 |
|---|---|
| [Dreamhack]lolololologfile (0) | 2026.04.07 |
| [Dreamhack]Path Finder (0) | 2026.03.31 |
| [추가공부] 파이썬 request.remote_addr (0) | 2026.03.24 |
| [web]pathtraversal (0) | 2026.03.24 |