Q1. stderr, stdin, stdout의 파일 지정자의 올바른 값을 고르시오
stdin의 fd는 0, stdout은 1, stdin은 2이다. 우리가 일상에서 가장 많이 사용하는 순서부터 가장 작은 값(0)으로 시작하고 하나씩 커진다고 생각하면 숫자와 매칭이 쉽게 된다.
Q2. 실습 환경에서 execve로 셸을 획득하려고 할 때, 다음 셸코드의 (a)에 들어갈 값을 고르시오.
Q3. 실습 환경에서 execve로 셸을 획득하려고 할 때, 다음 셸코드의 (b)에 들어갈 값을 고르시오.
pwndbg> x/s 0x7fffffffc278
"/bin/sh\x00"
mov rdi, (a)
xor rsi, rsi
xor rdx, rdx
mov rax, (b)
syscall
execve로 shell을 얻으려면 /bin/sh이나 /bin/bash 등을 argument로 execve에 넘겨줘야 한다. rdi가 /bin/sh을 가리키고 있어야 하기 때문에 gdb로 나온 /bin/sh의 주소 (0x7fffffffc278)를 저장해야 한다. rax에는 호출하고자 하는 syscall number가 담겨야 한다. execve의 syscall number는 59(0x3b)이다. 따라서 b는 0x3b이다.
a:0x7fffffffc278 , b:0x3b
'Dreamhack > pwn' 카테고리의 다른 글
basic_exploitation_000 (1) | 2024.11.15 |
---|---|
Return Address Overwrite (0) | 2024.11.15 |
Calling Convention Quiz (0) | 2024.11.15 |
shell_basic (1) | 2024.11.15 |
Computer Architecture Quiz (0) | 2024.11.11 |