Old-26 Write-up

Ccr3t·2024년 11월 28일
0

Wargame

목록 보기
2/55

[Solved in under 15 minutes]

한문제만 풀고 자야지가 벌써 세문제가 되었다.
문제 풀다가 막히면 자야겠다 히히

문제의 대시보드이다.
친절하게 view-source 눌러보라고 나온다.

해당 페이지의 소스코드를 보여준다.

<?php
  if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
  $_GET['id'] = urldecode($_GET['id']);
  if($_GET['id'] == "admin"){
    solve(26);
  }
?>

딱 이부분만 보자. preg_match란 php에서 정규표현식으로 문자열 검사하는 함수이다.
즉, admin이라는 문자열이 들어가 있으면 "no!" 를 말할게~ 이 뜻이다.
그리고 친절하게 또 urldecode를 한다고 한다 근데!!!
파라미터를 GET 으로 받고, id=admin이면 문제가 풀린다 이말이다.

요약하자면 문자열그대로 admin을 적으면 안되고 우회를 해야한다.
굳이 urldecode가 있는것으로 보아서 URL 인코딩하면 되겠다? 생각했다.

그래서 생각해서 만들었으니 예의상 ?id=admin 을 쳐보자.
냅다 no란다.

admin을 url 인코딩하면
a = %61
d = %64
m = %6d
i = %69
n = %6e
?id=%61%64%6d%69%6e를 입력해보았는데 가세요라고 한다.

그래서 바로 든 생각이 이중 인코딩을 하자 였다.
이중 인코딩이란 말 그대로 인코딩을 한번 더 하는것이다.
근데 여기서 인코딩을 어떻게 더 해요?라고 의문점이 들 수 있는데 인코딩 할 것이 남아있다.
바로 "%" << 이 특수문자이다.
퍼센트는 url 인코딩으로 %25이다.
그 말은 즉슨 %25 -> % 로 바뀔 것이니 첫번째 인코딩 한것에 % -> %25로 바꿔준다.

?id=%2561%2564%256D%2569%256E
첫 번째 디코딩 : %61%64%6d%69%6e
두 번째 디코딩 : admin
으로 바뀔것이다.
이해가 안되면 맨땅에 헤딩을 해보자 필자도 처음에 모르는거 투성이었다.
그냥 무작정 막 검색하고 그렇게 시작하여 이해를 해보자! 화이팅!

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

?id=%2561%2564%256D%2569%256E

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

드디어 Pwned! 라는 알림창이 떴다.
already solved말고 흐하하하ㅏㅎ
여하튼 다음 문제에서 보아요~!

Webhacking.kr Old-26 Write-up

이상 보고 끝!

profile
웹해킹을 잘 못 하지만 좋아 하려고 노력하는 한 젊은이.

0개의 댓글