XCZ.KR PROB 21 풀이
[ 뜨개질 ]
XCZ.KR의 21번 문제를 풀어보자.
제목부터가 "PHP 난독화 깨기"여서 처음에는 "뭐 별거 아니겠지"라 생각했는데
이뭐병....
https://www.unphp.net/를 통해 한번 디코딩해보니 다음과같이 변했다.
않이.... 대체 왜 변수 이름까지 저렇게 선언해둔거야,,,,,,
한땀한땀 저 퍼즐을 맞춰보면 다음과 같이 짧은 코드로 변한다.
지금 이 조금의 코드를 저만큼으로 늘여둔거???
(솔직히 좀 허무했어ㅇ...ㅛ....)
암튼 이제 원하던 원본 코드를 얻어냈으니 저 코드를 분석해보았다.
기본 설정 / 조건
- 받은 key값이 소문자 / 대문자의 영문 또는 숫자가 아닐 경우 "Error"을 출력하며 exit.
- 받은 key값을 - 를 기준으로 분할하여 $a에 배열의 형태로 저장한다.
h함수
파라메터로 넘겨받은 $a의 0번째부터 4번째까지의 아스키코드를 추출하여 그 합을 return해줌.
위의 조건을 만족하고 다음 조건들도 만족하면 플래그(인증값)이 출력되고 exit된다는 결과가 도출되었다.
$a[0] : 각 자리의 아스키코드 변환값의 합이 312 초과 333 미만
0 숫자
1 숫자
2
3 숫자 X
$a[1] : 각 자리의 아스키코드 변환값의 합이 300 초과 326 미만
0
1
2
3
$a[2] : 각 자리의 아스키코드 변환값의 합이 349 초과 407 미만
0 숫자 X
1 숫자
2
3
$a[3] : 각 자리의 아스키코드 변환값의 합이 357 초과 359 미만
0 숫자 X
1 숫자 X
2 숫자
3 숫자
$a[0] ~ $a[4]의 아스키코드 변환값의 합의 반올림 값이 $a[4]의 아스키코드값과 같음.
따라서 이제 도출된 조건에 부합된 값을 GET 메소드를 통해 key 파라메터로 전달해주면 플래그가 나온다.
XCZ.KR 21번 문제 클리어!
근데 전 대체 이문제 풀려고 얼마나 오래 걸린건가요... 그리 어려운 문제는 아니었네요.... ㅠㅠㅠㅠ
'보안공부 > XCZ 풀이' 카테고리의 다른 글
xcz.kr 7번 문제 풀이 - 윈도우벡터 (0) | 2018.08.16 |
---|---|
xcz.kr 11번 문제 풀이 - 무작위대입 (0) | 2018.08.11 |
xcz.kr 3번 문제 풀이 - 강남스타일 (0) | 2018.08.09 |
xcz.kr 22번 문제 풀이 - 슈퍼게에싱 (2) | 2018.08.08 |
xcz.kr 32번 문제 풀이 - 자료형이... (0) | 2018.08.05 |