[webhacking.kr] old-26 문제 풀이

2024. 10. 1. 17:01· 보안 스터디/웹 해킹
목차
  1. 프롤로그
  2. 문제 및 소스코드
  3. 풀이전략
  4. 풀이과정
  5. 왜?
  6. 에필로그
728x90
반응형

프롤로그

하루 한 문제씩 드림핵을 풀기에는 지금, 한 문제 푸는 데에 너무 오래걸린다.

할 일은 많은데, 그래서 다른 워게임들도 풀어보려고 찾았고, webhacking.kr를 찾아서 풀어보려고 한다.

1번 문제는 풀었으나, 너무 쉬웠어서 2번문제 부터 풀려고 한다.

 

 

문제 및 소스코드

처음 들어갔을 때는 그냥 검정화면에, view-source 가 보인다

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   ?>사이 부분을 보면

파라미터로 admin을 입력이 되면 문제가 풀릴 것이다. 다만 그 위에, 파라미터로 admin이 입력되면 no!가 입력이 될 터이니 그것을 우회해야한다.

 

풀이과정

https://webhacking.kr/challenge/web-11/?id=admin

를 맨 처음에 입력해보자.

no!가 출력이 되었다.

admin을 우회해야하는 방법들을 찾아보았다.

 

다음 생각해본 것으로는

  if($_GET['id'] == "admin"){
    solve(26);
  }

여기 부분에서 ==를 쓴다는 것. 즉 느슨한 비교를 쓴다는 것을 확인하였다.

숫자, 배열등을 입력하여서 강제 형변환이 되어 true가 되는 방식을 한 번 시도해보았다.

https://webhacking.kr/challenge/web-11/?id=0
https://webhacking.kr/challenge/web-11/?id=[]
https://webhacking.kr/challenge/web-11/?id=null
https://webhacking.kr/challenge/web-11/?id=true

모두 

결과값이 나오지 않았다.

 

http://www.lug.or.kr/files/docs/PHP/types.comparisons.html

 

PHP 자료형 비교표

PHP 자료형 비교표 다음 테이블은 PHP 자료형 과 느슨한 비교와 엄격한 비교를 위한 비교 연산자의 동작을 설명한다. 이 부록은 자료형 조절에 관한 매뉴얼 섹션과도 관련이 있다. 다양한 유저 주

www.lug.or.kr

여길 참고하여 0, true를 해보았으나...되지 않았다.

 

그러면 이제 다른 방식을 찾아야한다.

 

다음은 url 인코딩 방식이다.

공백의 경우 %20으로 변환이 된다.

이것을 활용하여 admin을 url 인코딩 해본결과

%61%64%6D%69%6E

이렇게 나왔고, 이것을 넣어보면

https://webhacking.kr/challenge/web-11/?id=admin

이렇게 다시 admin으로 바뀌면서 no!가 나온다.

 

여기까지는 내가 생각한 방식이고 이제 다른 블로그들을 참고한 결과

%61%64%6D%69%6E

이것을 한 번 더 인코딩을 해주었어야한다.

%2561%2564%256D%2569%256E

이 값을 넣어주면

해결되었다는 알림이 뜨면서 문제가 해결되었다.

 

 

왜?

%2561%2564%256D%2569%256E 가 들어가게 되면, 

  $_GET['id'] 에는 %2561%2564%256D%2569%256E 이게 들어가게 된다.

preg_match("/admin/", $_GET['id']) 여기서 그래서 admin이 아니기에 우회

urldecode($_GET['id'])가 실행되면 한 번만 디코드 되기에 여기서 

%61%64%6D%69%6E 이렇게 변형된다.

이건 admin이 되므로, 조건에 통과하게 된다.

 

 

에필로그

php는 url 인코딩, 느슨한 비교, 타입변환 관련되 내용들 밖에 없나?

728x90
반응형
저작자표시 비영리 (새창열림)

'보안 스터디 > 웹 해킹' 카테고리의 다른 글

[드림핵/워게임] Base64 based - WriteUp  (0) 2025.02.14
[드림핵/워게임] File Vulnerability Advanced for linux - WriteUp  (0) 2025.02.13
[드림핵/워게임] [wargame.kr] tmitter (웹 해킹)  (1) 2024.09.28
[드림핵/워게임] random-test (웹 해킹)  (3) 2024.09.26
[드림핵/워게임] baby-union (웹 해킹)  (9) 2024.09.25
  1. 프롤로그
  2. 문제 및 소스코드
  3. 풀이전략
  4. 풀이과정
  5. 왜?
  6. 에필로그
'보안 스터디/웹 해킹' 카테고리의 다른 글
  • [드림핵/워게임] Base64 based - WriteUp
  • [드림핵/워게임] File Vulnerability Advanced for linux - WriteUp
  • [드림핵/워게임] [wargame.kr] tmitter (웹 해킹)
  • [드림핵/워게임] random-test (웹 해킹)
성밍쟁
성밍쟁
성밍쟁 공붕방
성밍쟁
너드인의 밤
성밍쟁
전체
오늘
어제
  • 분류 전체보기 (182)
    • 일상 (1)
    • 스펙업 (7)
      • 학회 (0)
      • 멋쟁이사자처럼 (2)
      • 2024 winter-study (5)
    • 코딩테스트 - 백준 (9)
    • 보안 스터디 (56)
      • 시스템 해킹 (10)
      • 리버스 엔지니어링 (0)
      • 웹 해킹 (38)
      • 암호학 (8)
    • bandit (15)
    • 웹 개발 (11)
    • 머신러닝 (0)
    • 데이터베이스 (9)
    • KnockOn (72)
    • DevOps (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • /bin
  • 1074
  • 11656
  • 1193
  • 2563
  • 3Des
  • 9613
  • AES
  • Alias

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
성밍쟁
[webhacking.kr] old-26 문제 풀이
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.