일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mandb
- 명령어
- pwntool
- 침입감지시스템
- 리눅스
- 서브모터
- 툴
- 스테가노
- phase_2
- Bomb
- bomb lab
- 파일
- 데이터 형태
- 밤랩
- phase_4
- Reversing
- phase_3
- bomblab
- phase_5
- pwnable
- gdb
- phase_6
- IDS
- 디렉터리
- 아두이노
- 리버싱
- phase_1
- Linux
- binarybomb
- reversingg
- Today
- Total
Flag={C0MPU73R}
(리버싱) 밤랩 bomb - phase_6 본문
#bomb 문제는 phase_1 부터 phase_6까지 6개의 문제로 이루어져있다
#1단계부터 6단계까지 모두 맞춰야 폭탄이 해체되는 형식이다
이번엔 문제의 마지막 phase_6이다
gdb로 열어본당
증말증말 너무 길다..
앞부분을 보니 이번에는 숫자 6개를 입력하는 문제같다
인자로 "1 2 3 4 5 6"을 넣고 분석해본다
첫번째 비교문을 돌려가며 보니 첫번째 인자에서 1을 빼고
eax와 비교하는데 그 값이 5와 같거나 작아야 통과된다
첫번째 인자 =< 6
첫번째 인자로 "1"을 넣었기 때문에 통과된다
다음 부분이다 r13d가 지금 "0"인데 1을 더하고
r13d가 6인지 비교해서 맞으면 점프한다
인자가 6개인 걸 보면 하나하나 다 비교해서 다 했을때 점프하는 것 같다
인자를 카운팅하는 r13d를 ebx에 넣는다
sxd는 뭐하는건지 모르겠고 ebx(1)을 rax에 넣는다
eax에 뭔가를 넣는다 2가 들어가는 걸 보니까 다음 인자값 인 것 같다 - eax(2)
첫번째 인자 rbp+0x0(1)과 eax(2)를 비교해서 틀리면 통과한다
인자값이 다음 인자와 같으면 안되는 것 같다
값이 1~6이고 중복되면 안되면 답은 "1 2 3 4 5 6"을 특정 순서대로
넣어야하는 문제인 것 같다
--------------------스킵--------------------
증말 기나긴 인자 하나하나를 검사하는 감옥에서 탈출하고 왔다 허허
분석해본다
esi에 0을 넣는다 - esi(0)
ecx에 뭔가를 넣는다 들어간 값은 0x1이다 - ecx(1)
eax에 1을 넣는다 - eax(1)
edx에 뭔가 값을 넣는다 뭐가 들어갔는지 보니 0x79가 들어갔다 - edx(0x79)
ecx(1)와 1을 비교해서 더 크면 점프한다
그냥 +117로 점프한다
ecx가 첫번째 인자값(1)을 넣은 것 같다
rdx(0x79)를 어딘가에 넣는다
rsi(0)에 4를 더한다 - rsi(4)
rsi(4)을 0x18(26)과 비교해서 틀리면 +139로 점프
같으면 +159로 점프
rsi에 4를 더하고 0x18(26)과 비교하려는거 보면
여기서도 인자 하나하나 돌리는 것 같다 인자 6개 딱맞음 ㅜㅜ (4*6=24)
또 돌아왔다
ecx에 다음 인자값(2)를 넣는다 - ecx(2)
eax에 1을 넣는다 - eax(1)
edx에 뭔가 값을 넣는다
ecx(2)를 1과 비교해서 더 크면 +106으로 점프
아니면 +117로 점프
rdx에 처음 rdx(0x79)의 다음 주소값에 있는 0x193를 넣는다
eax(1)에 1을 더한다 - eax(2)
eax(2)를 ecx(2)와 비교하여 틀리면 점프한다
인자가 바뀔 때 마다 rdx의 값이 바뀐다
인자가 "1"이었을 땐 0x79
인자가 "2"였을 땐 0x193
스킵해서 다 정리해보면
인자"1" - 0x79, 인자"2" - 0x193, 인자"3" - 0x96,
인자"4" - 0x88, 인자"5" - 0xd7, 인자"6" - 0x3a9
뒷부분까지 쭉 가보면 인자를 "A B C D E F"라고 보면
A > B > C > D > E > F 이렇게 되야 문제가 클리어된다
인자로 숫자 1부터 6까지 넣을 수 있는데
그냥 순서대로 "6 5 4 3 2 1" 넣는게 아니고
각 숫자별 rdx값을 비교해서 큰 순서대로 넣는것이다
크기를 비교해보면
937 > 403 > 215 > 150 > 136 > 121 이다
그래서 답은 "6 2 5 3 4 1"이다
이렇게 bomb 문제를 phase_1 부터 phase_6까지 모두 해결했다
정말 정리하는게 너무 어렵다 허허 혼자 풀기는 쉽고 편한데
이제 secret_phase를 푸는 방법을 찾아봐야겠당
'사이버 가디언즈' 카테고리의 다른 글
(리눅스) 명령어 - ltrace (0) | 2018.10.05 |
---|---|
ascii, hex, 정수, 2진수, base64 converter (0) | 2018.09.07 |
(리버싱) 밤랩 bomb - phase_5 (1) | 2018.08.29 |
(리버싱) 밤랩 bomb - phase_4 (1) | 2018.08.27 |
(리버싱) 밤랩 bomb - phase_1~6 클리어! (1) | 2018.08.27 |