모각코(코딩스터디)

2026-01-02 동계모각코 1차 회고

mincom1224 2026. 1. 2. 15:44

드림핵의 ROP문항을 풀이하였다.

우선 checksec를 통해 스택카나리등 여부를 확인해보자

실제 카나리가 적용되어 있고 NX가 적용 되어있다. 그리고 PIE는 되어있지않아서 메모리가 매 실행마다 바뀌지는 않는다.

그럼 이제 우분투에 gdb를 활용하여 어셈블리를 확인해보면

오늘은 +21까지 어셈블리해석을 진행했는데 

push rbp

mov rbp,rsp

sub rsp,0x40은 

스택에 rbp를 넣고 0x40만큼 rsp(스택포인터)를 내려 함수가 돌아갈수 있는 공간을 만들어주는 함수 프롤로그 였다.

여기서 sub로 함수의 메모리주소를 8(십진수)만큼 빼고 있는데 이는 스택은 메모리주소가 높은데 부터 낮은 곳으로 거꾸로 자라기 때문에 내가 메모리 여유공간을 만들고 싶다면 sub를 내가 메모리를 닫고 싶다면 메모리 주소를 더하면 되는 것이다.

여기까지 함수프롤로그 였고 다음 줄인 mov eax, QWORD PTR[rbp-0x8] fs:0x28

mov QWORD PTR [rbp-0x8], rax

xor eax,eax

이 부분은 스택카나리 부분이다. 0x28(세그먼트 레지스터)에 있는 값을 8비트만큼 eax에 넣는다. 이는 곧 카나리 값이 되고 eax에 카나리값이 있기 때문에 이를 0x8에 옮긴다. 그리고 eax에는 카나리 값이 있기 때문에 이는 xor eax,eax로 0 으로 만들어준다 0을 넣지않고 xor로 하는 이유는 xor이 기계어 코드가 더 짧기 때문에 효율적이기 때문에 사용한다

 

 

오늘은 여기까지 진행하였는데 생각보다 많은 시간을 할애하였다. 어셈블리어 해석은 아직 1학년인 내게 좀 난이도가 높았지만 차근차근 하나씩 뜯어보며 분석하는 재미가 있었다.

'모각코(코딩스터디)' 카테고리의 다른 글

2026-01-16 동계모각코 2차 회고  (1) 2026.01.16
2026-01-16 동계 모각코 2차 목표  (0) 2026.01.16
2025-01-02 동계 모각코 1차 목표  (1) 2026.01.02
모각코5차  (0) 2025.08.15
모각코3차  (0) 2025.08.14