tmxklab
[Pwnable.xyz] add 본문
1. 문제
nc svc.pwnable.xyz 30002
1) 문제 확인
- 세 개의 인자 값을 받을 수 있으며 int형이 아닌 값이 들어오면 프로그램이 종료됨
2) 함수 확인
3) IDA(hex-lay) - 메인 함수
- 18번째 줄 : input값으로 3개의 값을 scanf함수를 통해 받을 수 잇으며 return값이 3이 아니면 무한 루프 종료
- 20번째 줄 : 입력 값으로 받은 3개의 v4, v5, v6를 통해 v7[v6] = v4 + v5
4) IDA(hex-lay) - win함수
5) 메모리 보호기법 및 파일 정보 확인
64bit elf파일이며 동적 라이브러리를 사용, not stripped되어 있어 심볼 정보가 남아 있음
- NX가 걸려있어 쉘 코드 삽입을 통한 실행 권한이 없음
- Canary가 존재하여 카나리 값 변조시 프로그램 종료(여기서 xor canary가 적용됨)
2. 접근 방법
ret값을 win함수의 주소로 변조하여 공격하기 위해 v7배열 인덱스를 가지고 장난쳐봄
1) 스택 구조 확인
+) 디버깅을 통해 확인
- ret주소 값 : 0x7fffffedf58
입력 값을 "1 1 13" 준 후 결과 확인
- 1+1의 결과 값이 v7[13] = ret위치에 저장된 것을 확인할 수 있다.
2) 결론
-
win함수의 주소 값을 찾아 v7[13]에 대입하여 win함수를 실행
3. 풀이
1) win함수 주소
- 0x400822이므로 십진수로 하면 4,196,386
- 따라서, v4, v5의 인자 값에 2,098,193을 입력 후 v6에 13을 입력해야 한다.
2) 공격 실행
'War Game > Pwnable.xyz' 카테고리의 다른 글
[Pwnable.xyz] free spirit (0) | 2020.03.30 |
---|---|
[Pwnable.xyz] grownup (0) | 2020.03.30 |
[Pwnable.xyz] misalignment (0) | 2020.03.27 |
[Pwnable.xyz] sub (0) | 2020.03.07 |
[Pwnable.xyz] welcome (0) | 2020.03.07 |
Comments