webhacking.kr - old 26 (URL Encode,Decode)

2024. 3. 8. 11:23·Wargame/Webhacking.kr

문제화면

 

 

 

 

 

view-source를 눌러 확인해 보자.

 

 

 

 

 

 

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 26</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }    
a { color:lightgreen; }
</style>
</head>
<body>
<?php
  if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); }
  $_GET['id'] = urldecode($_GET['id']);
  if($_GET['id'] == "admin"){
    solve(26);
  }
?>
<br><br>
<a href=?view_source=1>view-source</a>
</body>
</html>

 

 

핵심 부분을 추려보자.

 

 

 

 

 

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

 

 

먼저 'preg_match' 함수는 주어진 정규 표현식 패턴을 사용해서 문자열 내에서 일치하는 부분을 찾아내는 함수이다.

 

서버에서 GET 방식으로 'id' 값이 'admin'과 일치하면 'no!'를 출력하고 종료시키고 그 밑에 줄부터는

 

url decode 함수를 이용해서 GET에서 받은 'id' 값을 url디코딩시키는 코드인 거 같다 그리고 'id' 매개변수가 'admin' 인지 확인하고 'admin' 이면 문제가 풀리는 거 같다.

 

요약하자면 문자열 'admin'을 넣으면 막히고 'admin' 을 url 인코딩을 해서 정답을 대입해야 하는 거 같다.

 

한번 해보자.

 

 

'

 

 

 

 

 

 

 

 

 

 

 먼저 그냥 문자열로 대입하면

 

 

'no!'라고 뜬다.

 

여기서 URL 처음 입력한 '?'는 '$_GET' 변수를 통한 접근이라고 말할 수 있고 , DB에 대해서 요청하는 것이다.

 

그리고 이제 'no!'를 확인했으니 정답을 얻어보자.

 

 

 

 

 

 

 

 

 

 'admin'은 영문 문자열은 URL 인코딩하지 않아도 그대로 쓸 수 있기에 URL 인코딩 표를 참고하거나, ASCII 코드로 변경하여 '0x' 부분을 '%'로 치환해 주자.

 

 

admin = %61%64%6D%69%6E

 

대입해 보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그래도 똑같이 'no!'가 출력된다.

 

확인해 본 결과 PHP에서는 GET, REQUEST 방식을 통해 전달된 값은 자동으로 URL 디코딩이 된다고 한다.

PHP가 서버 측에서 URL을 해석할 때 자동으로 처리되는 부분 중 하나라고 한다.

 

그러면 인코딩을 한번 더 하면 된다는 말이다. [ 코드에서 한번 , GET으로 한번 decode 시킴] 

 

URL 인코딩 사이트에서 한번 더 인코딩 시키자.

 

admin[2번Encode] == %2561%2564%256D%2569%256E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Wargame > Webhacking.kr' 카테고리의 다른 글

webhacking.kr - old 24 (function_extract)  (0) 2024.03.12
webhacking.kr - old 03 (SQL Injection)  (0) 2024.03.08
webhacking.kr - old 18 (SQL Injection)  (0) 2024.03.06
webhacking.kr - old 16 (ASCII)  (0) 2024.03.06
webhacking.kr - old 06 (base64)  (0) 2024.03.06
'Wargame/Webhacking.kr' 카테고리의 다른 글
  • webhacking.kr - old 24 (function_extract)
  • webhacking.kr - old 03 (SQL Injection)
  • webhacking.kr - old 18 (SQL Injection)
  • webhacking.kr - old 16 (ASCII)
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • 모의해킹 (7)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
        • CTF (22)
      • Android_security (5)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    sql injection
    bandit17
    난독화
    CTF
    insecurebankv2
    bandit
    webhacking.kr
    overthewire
    리눅스 워게임
    union
    wargame
    Cookie
    drozer
    php wrapper
    워게임
    리눅스
    cookies
    Linux wargame
    정보보안기사
    bandit30
    Linux
    lfi
    php
    Android
    bandit20
    안드로이드
    bandit18
    webhacking
    Dreamhack
    url encode
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
webhacking.kr - old 26 (URL Encode,Decode)
상단으로

티스토리툴바