문제사이트 : Codegate
문제이름 : BabyMISC
링크 : X
풀이
↑STAGE 1의 코드이다. 분석해보니 사용자에게 입력받는 값의 base64decode 값이
TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oig=의 디코드 값과 같아야 하며
입력한 값과 길이도 같아야 한다. 그런데 TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oig=과 입력한값이 같으면 안된다.
언듯 보았을 때는 모순적으로 보일수도 있다. 하지만 base64의 특성을 이용하여 마지막값만 하나 바꿔서 입력해주면 넘어간다.
입력 : TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oih=
↑끝자리만 h로 바꿔주자 다음 스테이지로 넘어갔다.
↑STAGE 2는 두번 값을 입력받는데, 그 두개의 입력값의 길이가 다르며 base64decode 값은 같아야 한다.
이 또한 모순적일 수 있으나 단지 두번째 값에 =을 하나더 붙여주면 넘어가는 스테이지 이다.
↑등호 하나만 더 입력해주자 넘어가 졌다.
입력 : TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oih=
TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5Oih==
↑마지막으로 우리에게 단 하나의 명령어를 base64로 입력할 수 있는 기회를 준다. 하지만 분석해보면
[/|$|-|_|&|>|`|'|"|%|;]|(cat)|(flag)|(bin)|(sh)|(bash) 을 필터링 하고 있다.
↑ 필터링 하는 모습.
서버로 연결한 것이 아닌 파일을 실행해서 푸는거라 STAGE3을 푸는 사진은 캡처하지 못했다.
기억나는 대로 쓰자면 우선 ls -la를 base64코드로 입력하여 플래그 파일을 찾는다.
그리고 head * 명령어를 base64코드로 입력해 주면 플래그 파일이 출력되며 결과를 알 수 있다.
head 명령어는 파일의 내용을 위에서부터 10줄 출력해 내는 명령어 이다.
'Reversing > WriteUp' 카테고리의 다른 글
[Reversing.kr] CSHARP (0) | 2017.02.21 |
---|---|
[Reversing.kr] Ransomware (0) | 2017.02.21 |
[Reversing.kr] Replace (0) | 2017.02.21 |
[Reversing.kr] Easy Crack (0) | 2017.02.12 |
[xcz] Prob9_Easy Reversing (0) | 2017.02.10 |