본문 바로가기

카테고리 없음

[Dreamhack] System Hacking 로드맵 Quiz: x86 Assembly 3

 

주요 코드를 분석해보면 다음과 같다.

 

mov esi, 0xf : esi에 0xf (15)저장 >> 이를 통해 출력할 바이트 수가 15바이트임을 알 수 있다.

mov rdi, 0x400500 >> rdi에 0x400500 메모리 주소를 저장하는 것을 알 수 있다.

 

그리고 write_n 함수 코드에서 syscall 명령어를 주의깊게 봐야한다.

mov rax, 0x1 : rax에 0x1을 대입하여 write 기능을 수행하게 한다.

mov rdi, 0x1 : rdi에서 0x1은 unsigned int fd이기 때문에 rdi는 1로 설정된다.

 

[Memory]

1바이트 단위로 끊어보면 0x30/37/20/79/64/34/33/72와 0x00/3f/36/75/62/33/64/20이 된다.

이 값을 아스키코드로 변경하면 각각 d3bu6? 와    r34dy 70 이 나오게 되는데

이는 리틀엔디안방식을 고려하지 않아서 그렇다.

 

리틀엔디안방식 : 낮은 주소에 데이터의 낮은 바이트를 저장하는 방식

을 고려하면, 정답은  r34dy 70  d3bu6?