XCZ.kr [prob 32] 풀이

2019. 10. 18. 22:16Wargame/XCZ.kr

<?php 
if($_GET['a']==""){exit ("WUT?? 31337?");}  
$a= urlencode($_GET['a']);  
if(isset(
$a)){ 
    if(
$a == "12735366333132132465461?????????????????????????????") {exit("KEY"); 
    } else {echo 
"Failed ur tricks";} 

    else{ 
        echo 
"WTH?"

?>

32번의 소스코드를 확인해보면 위와같다.

a를 입력받아서 urlencode 한다.

그후 12735366333132132465461????????????????????????????? 이란 값과 비교해서 같으면 풀린다.

이 문제의 타이틀부터 보면

Title
Easy Trick

php의 트릭을 이ㅎ용해서 키 값을 구하는것 같은데  

이 문제에서 이용해야 하는 php 트릭은 php 가 매우 작은 숫자비교는 같다고 처리하는 것이다.

rubiya님 블로그에 잘 정리가 되있다. http://blog.naver.com/withrubiya/70175920455

 

php trick, bugs

php에서의 버그, 트릭들에 대해서 문서를 작성하려다가 쓸거리가 부족하다는걸 깨닫고 그냥 블로그에.. (1)...

blog.naver.com

<?

echo 10000000000000000 == 10000000000000001;

?>

를 출력해보면 분명 다른 숫자인데도 불구하고 작은 차이이기 때문에 무시해서 참값을 출력하는것을 볼 수 있다,.

그래서 그냥 

1273536633313213246546100000000000000000000000000000

아무 숫자나 대입해줘도 php는 작은차이라고 인식하기 때문에 무시해서 참값을 반환해 문제가 해결된다.