시스템 해킹

4주차 질문

kchabin 2022. 8. 19. 01:05

[pwnable.kr bof] 문제 질문

1. disas 명령어로 main과 func를 디스어셈블했을 때 주소가 0x0000000000001169일 때가 있고, 
0x0000555555555169일 때가 있는데, 이렇게 주소가 바뀌는 건 왜 그런건지 궁금합니다.
찾아보다가 알았는데, PIE가 enabled 상태여서 그런건가요?

2. mov DWORD PTR [rbp-0x4], edi 이 부분이 
rbp-0x4가 가리키는 주소에 edi를 대입한다는 뜻이 맞나요?
그러면 rbp-0x4는 베이스 포인터에서 0x4만큼 뺐다는 의미가 되는건가요

3. 다른 분들의 write up을 참고하고 어셈블리어 공부를 하면서 분석해봤는데, 
다른 write up들은 대부분 esp, ebp 이런 식으로 나오고 저는 rbp, rsp 이렇게 나왔습니다. 
다른 이유는 32비트와 64비트 차이인건가요?
왜 다른건지 궁금합니다.

 [gdb 분석 실습]
1. edi, esi, edx값이 DWORE PTR [rbp-0x24], rbp-0x28, rbp-0x2c 에 차례대로 저장되는 것 같은데 
이건 4바이트씩 차이가나는건가요? 일정한 간격을 두고 저장되는건지 궁금해서 질문합니다. 

2. x/4gx $rsp는 무슨 용도인지 궁금합니다.

3. si와 ni의 정확한 차이점이 궁금합니다. 
si는 함수 내부로 들어가고, ni는 내부로 들어가지 않는다고 해서 
si는 함수 내부까지 일일히 명령을 실행하고 ni는 함수만 선택되고 그 다음으로 넘어가는 것으로
해석했는데 이 해석이 맞는건지 궁금합니다.

basic001
read_flag의 주소를 p read_flag로 출력해서 얻은 주소 값 0x1217을 코드에 넣었는데도 
flag 파일이 실행되지 않았습니다. 
다시 해봐도 0x1217로만 나오는데 왜 이런건지 궁금합니다.

'시스템 해킹' 카테고리의 다른 글

Mac M2 UTM에 Kali Linux 설치하기  (0) 2024.10.08
SSTF Hacker's Playground  (0) 2022.08.23
gdb 개념 및 사용법  (0) 2022.08.19
basic exploitaion 001 문제 풀이  (0) 2022.08.19
pwnable.kr bof 문제 풀이  (0) 2022.08.19