0. Introduce
대회 당시에 이문제는 그냥 손도안대고 babypwn풀고나서 hunting에 올인하는바람에 냅둔문제.. 대회후에 한 1~2일동안 hunting만 붙잡고 계속 해봤는데 안되서 머리식힐겸 한번 풀어봤는데 너무 쉽게풀렸다.. 대회때풀어볼껄..
1. Binary
STAGE 3까지 원하는 INPUT값을 찾아서 넣어주면 Flag를 출력하는 프로그램이였다.
2. How To Solve
STAGE 1의 조건문을 확인해보면 코드에 있는 base64로 인코딩된 문자열이 있는데, 이 문자열을 디코딩했을 때 디코딩된 문자열은 같아야하지만 base64로 인코딩된 문자열은 같으면 안된다.
그래서 그냥 TjBfb~로 시작하는 base64 문자열을 디코딩해서 null을 하나 붙여준뒤 인코딩했더니 넘어갈 수 있었다.
STAGE 1 >
TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5OigA
STAGE 2는 두가지를 입력받아서 그 두개의 길이는 다르지만 디코딩된 결과는 같아야한다.
첫번째 인풋에다가 STAGE 1에서 입력한 문자열을 넣고 두번째 인풋에 첫번째 인풋의 디코딩결과에 null을 하나 더붙이고 인코딩한 문자열을 넣어주어서 넘어갔다.
STAGE 2 >
(input1) TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5OigA
(input2) TjBfbTRuX2M0bDFfYWc0aW5fWTNzdDNyZDR5OigAA
STAGE 3는 하나의 커맨드를 실행시킬 수 있게해준다. 하지만 sub_400E0B에서 보통 커맨드 인젝션에 쓰이는 문자열들을 필터링한다.
그래서 cat flag를 utf16형식으로 인코딩하고 인코딩된 결과를 base64로 인코딩해서 넣어줬더니 FLAG가 나왔다.
STAGE 3 >
AGMAYQB0ACAAZgBsAGEAZw==
3. FLAG
'해킹 > Write Up' 카테고리의 다른 글
Codegate 2017 prequals hunting Write Up (0) | 2017.02.21 |
---|---|
9447CTF 2015 serach engine Write Up (2) | 2017.02.19 |
Codegate 2017 prequals Babypwn Write Up (0) | 2017.02.16 |
Hackcon Mini 2017 Pwnable WriteUp (0) | 2017.02.12 |
Plaid CTF 2014 ezhp Write Up (0) | 2017.01.29 |