Wargame/xcz.kr

[xcz.kr] 21번 PHP Obfuscation Crack

광팔2 2021. 1. 20. 20:24
반응형

문제

문제 제목부터 php 난독화 풀기이다.

 

일단 소스를 열어서 확인했다.

 

벌써부터 힘이 빠진다...

 

https://www.unphp.net/decode/eac0df34824ddf7f8466be54317754a4/

 

UnPHP - PHP Decode of ${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x67\..

PHP Decode ${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x67\x61\x73y\x61\x72\x6b\x6e\x64"]="\x62";${"\x47\x4c\..

www.unphp.net

저번에 php를 공부하다 얻게 된 php 난독 복호화해주는 사이트이다.

 

복호화하면 이 정도로 줄어들긴 한다.

 

그래도 아직 깔끔하지 않고 보기 불편해서 notepad의 JStool을 이용해 조금은 보기 편하게 바꿨다.

php.js
0.01MB

 

일단 코드를 해석해 보자.

 

코드가 너무 길기 때문에 간단하게 설명하겠다.

 

함수 h($a)를 보면 $a의 0번 ~ 4번 아스키코드를 추출하여 그 합을 return 해준다.

이제 다음 조건문들을 충족하면 key값을 출력한다

explode함수를 이용하여 - 기준으로 5개로 나눠진다.(key - key - key - key - key )

 

이제 봐야 하는 if문들을 봐야 하는데 진짜 너무 길다...

일단 정리를 하면... 모든 key들은 배열에 들어가는데 if문 안에서 잘 봐야 다한다.

 

여기서 

1번 key : 312 < key < 333( 숫자 / 숫자 /     /     / 문자 )

                                   (  8   /  8   /  8   /  8 /  f   ) 합 326

 

2번 key : 300 < key < 326( 문자 /     /     / 숫자 / 숫자 ) 

                                   (  f   /  7  /  7 /   7   /   7   ) 합 322

 

3번 key : 349 < key < 407( 문자 / 숫자 /     /     /       )

                                   ( f   /    7  /   f   / 7  /    7   )  합 369

 

4번 key : 357 < key < 359( 문자 / 문자 / 숫자 / 숫자 / 숫자 )

                                   (  a   /   a   /  9   /    9   /   2    )  합 358

 

5번 key : 모든 key 합 / 4의 반올림 값 == 5번 key (모든 key의 합 / 4의 반올림한 값이 5번 key값과 같아야 한다.)

                                    (   F  /   F  /  F  /  M  /   9  ) 합 344

 

플레그를 얻을 수 있다.

문제는 쉬운데.... 코드 정리하고, 계산하는데 시간이 너무 많이 걸렸다..... 이런 문제는 별로 재미없다.

 

플레그 값 : what_the_fuckin_0bfuscati0n

반응형