canary 문제이다
해당 명령어로 적용된 보호기법 확인이 가능하다
NX도 켜져있으므로 쉘코드 사용불가 -> 문제 내 함수 이용
처음 코드 본 순간 어지러웠다.
포너블 공부하면서 본 코드 중 제일 길었다
코드 보고 예상한 스택 상태는
이거였다
gdb 뜯어본 결과
이런 상태였다
name이랑 box위치가 다르다..
*코드분석
: 1. print해주는 부분이 P 입력 했을 때 밖에 없으므로 P 입력 후 카나리 릭 가능
2. E 입력 시 name의 길이를 사용자가 지정 가능하므로 BOF 발생
3. get_shell함수 주소를 ret에 덮어 씌우면 끝
페이로드
:
새롭게 알게 된 것들
1. 변수를 선언해줄 경우 canary = b''와 같은 형태로 선언해줌
2. 바이트 코드 형태를 사용하므로 정수 입력 시 str로 변환 하여 보냄 (왜 바이트 코드를 사용하지)
3. 파이썬 반복문 사용하는 법 터득
해당 while 문을 for문으로 변환하면
for i in range(131, 127, -1): 로 변환 가능
-> i를 132부터 127까지 -1씩 감소 시키며 반복
131, 130, 129, 128, 총 네 번 반복
느끼점
: 코드 분석을 꼼꼼히 하자
gdb로 변수들의 위치를 정확히 확인하자
'System Hacking' 카테고리의 다른 글
[드림핵] rop (return oriented programming) 풀이 - 티스토리 (0) | 2023.07.21 |
---|---|
[드림핵] Return to Library 풀이 - 티스토리 (0) | 2023.07.19 |
[드림핵] Return to Shellcode 풀이 - 티스토리 (0) | 2023.07.12 |
[드림핵] baic_exploitation_000 풀이 - 티스토리 (0) | 2023.07.10 |
[드림핵] basic_exploitation_001 풀이 - 티스토리 (0) | 2023.07.09 |