소스코드는 다음과 같다. $pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/" 정규식 표현을 pat 변수에 저장한다. [1-3] : 1~3중 하나의 값 [a-f]{5} : a~f중 5개의 값 * : 문자를 0번 이상 반복 $_SERVER[REMOTE_ADDR] : 자신의 외부 ip주소 \tp\ta\ts\ts : \t는 인코딩하면 %09와 같다. %09p%09a%09s%09s if(preg_match($pat,$_GET['val'])){ solve(11); } pat과 val값이 같으면 문제는 풀린다. 따라서 다음과 같이 작성하면 된다. ?val = 1abcde_*내 아이피주소*%09p%09a%09s%09s 풀렸다.
들어가면 다음과 같이 뜬다. 소스코드를 확인하면 다음과 같다. $decode_id =="admin"이고 $decode_pw=="nimda"이면 문제는 풀린다. $decode_id =="admin"과 $decode_pw=="nimda"가 될려면 "admin"과 "nimda"를 20번 base64_encode를 해주고 str_replace함수를 이용하여 변환을 해준다. 그리고 이 값을 각각 'user'의 쿠키값, 'password'의 쿠키값에 저장을 해준다. 따라서 쿠키값을 구하기 위한 코드는 다음과 같다. 이러면 user와 password의 쿠키값이 나오게 되고 이것을 EditThisCookie를 이용하여 쿠키값을 변경해 주면 된다.
들어가면 다음과 같이 뜬다. 소스 코드를 확인해보았다. join 버튼을 누르면 Access_Denied가 뜬다. login버튼을 누르면 mem/login.php로 들어가는 거 같다. 그러면 mem은 디렉토리가 아닐까 생각해보았고 mem으로 들어가 보았다. mem에서 join.php로 들어가보았다. bye가 뜨고 검은 화면이 뜬다. 혹시 몰라서 소스코드를 확인해보았다. 뭐가 보기 어렵게 되어있다. 개발자 도구에서 콘솔창에 복사 붙여넣기 해봤다. 근데 이 위의 것이 필요없이 join페이지에 들어갈때 if(eval(llll+lllllllllllllll+lll+lllllllllllllllllllll+lllllllllllll+lllll+llllllllllllll+llllllllllllllllllll+li+'U'+..
들어가면 다음과 같은 화면이 뜬다. 소스코드는 다음과 같다. 페이지의 쿠키값이 숫자가 아니거나 6이상이면 쿠키값은 1이 된다. 쿠키값이 5보다 클때 solve된다. 따라서 페이지의 쿠키값이 5이상 6미만이면 문제는 풀린다. 크롬에 EditThisCookie라는 확장프로그램을 설치해서 이를 이용하였다. 값을 5.5로 바꿔주었다. 그러면 풀린다.