일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Bomb
- Linux
- phase_2
- 데이터 형태
- 밤랩
- pwnable
- 툴
- 파일
- 아두이노
- 디렉터리
- phase_4
- bomblab
- phase_6
- Reversing
- 침입감지시스템
- bomb lab
- 명령어
- phase_3
- 리눅스
- gdb
- mandb
- 스테가노
- reversingg
- phase_5
- 서브모터
- phase_1
- pwntool
- IDS
- 리버싱
- binarybomb
- Today
- Total
Flag={C0MPU73R}
(리버싱) 밤랩 bomb - phase_5 본문
#bomb 문제는 phase_1 부터 phase_6까지 6개의 문제로 이루어져있다
#1단계부터 6단계까지 모두 맞춰야 폭탄이 해체되는 형식이다
이번에는 phase_5를 정리한당
이번에도 숫자 두개를 입력하는 문제다
어짜피 터질거기 때문에 그냥 바로 분석한다
인자1과 인자2를 입력 받는데
입력받고 rsp(인자1)와 15(0xf)를 비교해서
틀리면 점프하고 같으면 터진다
인자에 1과 2를 넣고 통과해서 다음부분을 분석해본다
ecx에 0x0을 넣는다
edx에 0x0을 넣는다
edx에 0x1을 더한다 - edx(1)
eax에 뭔가를 넣는다
ecx에 eax(뭔가)를 더한다
eax와 0xf를 비교해서 틀리면 뒤로 점프한다
여기서 eax에 들어가는 뭔가가 계속 다른게 나오길래 나오는 순서대로 적어둔다
1 2 e 6 f
f가 나와서 비교문에서 통과되어 +91로 넘어간다
분석해보자
rsp에 0xf를 넣는다
edx와 0xf를 비교해서 틀리면 폭탄이 터진다
edx는 아까 분석한 부분에서 eax에 들어가는 뭔가가 바뀔 때 마다
1씩 추가되었는데 여기서 f일때 통과되는 것 보니까 지금은 f가 4번째에 나와서 4인데
eax가 0xf 일 때 통과되고 edx도 0xf일 때 통과되는 걸 보면
그 eax에 뭔가가 들어가는 거에서 f가 마지막으로 와야하는 것 같다
첫번째 인자에 1을 넣었을 때 "1 2 e 6 f"로 첫번째 인자로 시작해서 순서대로 나오는 것 같다
첫번째 인자를 1, 2, 6, e, f를 제외하고 하나를 넣어본다 (인자 = 3 2)
이번엔 3으로 시작되서 "3 7 b d 9 4 8 0 a 1 2 e 6 f"를 끝으로 총 14개만 나오고 끝난다
정리해보면 (1 2 3 4 * 6 7 8 9 a b * d e f) 여기서 안나온건 5와 c가 있다
이중에 하나를 넣으면 f가 맨 마지막으로 나올 것 같다
먼저 첫번째 인자를 5로 넣어본다 (인자 = 5 2)
"5 c 3 7 b d 9 4 8 0 a 1 2 e 6 f" 이렇게 5를 시작으로 rdx가 마지막 0xf일 때
eax에도 0xf가 들어가 있다
5를 맨 처음에 넣어야 f가 맨 마지막에 오는 순서인 것 같다
eax는 0xf 이기 때문에 통과
edx도 0xf 이기 때문에 통과
마지막에 두번째 인자 rsp+0x4와 ecx를 비교해서
같으면 폭탄을 통과해서 클리어하게 된다
값을 보면 0x73으로 10진수로 변환하면 "115"다
이래서 첫번째 인자는 "5" 두번째 인자는 "115"를 입력하면 클리어 하게 된다
phase_5 클리어~
# 정리를 다른사람이 이해하기 쉽게 잘 못하겠다 ㅜㅜ
'사이버 가디언즈' 카테고리의 다른 글
ascii, hex, 정수, 2진수, base64 converter (0) | 2018.09.07 |
---|---|
(리버싱) 밤랩 bomb - phase_6 (1) | 2018.08.29 |
(리버싱) 밤랩 bomb - phase_4 (1) | 2018.08.27 |
(리버싱) 밤랩 bomb - phase_1~6 클리어! (1) | 2018.08.27 |
(리버싱) 밤랩 bomb - phase_3 (3) | 2018.08.26 |