webhacking.kr 56번 문제풀이

2023. 1. 19. 10:47·웹/웹 해킹 문제 풀이

56번 문제의 화면이다. html 소스코드를 살펴보자.

 

<html>
<head>
<title>Challenge 56</title>
</head>
<body>
<center>
<h2>B O A R D</h2>
<br><br>
<table border=1>
<tr><td>no</td><td>id</td><td>subject</td><td>secret</td></tr>
<tr><td>1</td><td>admin</td><td><a href=?read=admin>readme</a></td><td>1</td></tr><tr><td>2</td><td>guest</td><td><a href=?read=guest>hi~</a></td><td>0</td></tr></table><form method=post>search : <input name=search size=50 maxlength=50><input type=submit></form></body>
</html>

<tr>,<td> 태그로 보아 테이블 형태로 표현하고 있으며 링크와 <form>태그가 보인다.

post방식으로  이름이 'search' 인 값을 보내고 있다.  이외에는 별다른게 없다. 

두개의 링크를 확인해보자.

 

'readme' 와 'hi~'를 클릭하면 위와 같이 나온다.    admin쪽 화면은 access denied 라고 뜨며 거부가 된다. 

search 부분을 입력하여 문제에 접근해야겠다.

 


문제접근

 

입력란에 1~9 , admin , guest 를 다 입력해 봤을때 board에 아무런 출력이 없었다. a, d, m,  i, n 를 한글자만 입력했을때 board에 admin이 나와 혹시 secret란의 1,0이 글자 수를 의미하나 싶었지만 guest에는 적용이 안되었다. 

여러 삽질을 해보다가 hi~ 링크를 클릭했을때 나오는 'hello~' 를 입력해봤더니 guest가 표시되었다. h, he, ell 같이 연속된 문자열을 입력했을때도 guest가 표시되는 것으로 보아 subject 링크내의 문자열과 일치하는 문자를 제출하면 표시가 되는 원리같다. 

 

그러면 우리가 접근해야할 admin 부분은 search에 입력을 해보면서 어떤 문자가 있는지 알아내면 문제가 해결될 것 같다. 

flag가 우리의 목표이니 flag 관련 문자를 입력했다. f, fl , la , lag , flag 등을 입력하면 admin이 표시가 된다. 즉 readme 링크내의 문자열에는 'flag' 가 포함되어있다. 파이썬 스크립트를 작성해서 정확한 flag 값을 알아보자.

 


실행

 

파이썬 스크립트 ( 'readme' subject의 문자열을 찾기위한 코드)

위와 같이 request 모듈을 불러와 특정 값을 post방식으로 보내  admin이 출력되면 특정 값을 저장하여 문자열을 찾아내는 과정이다.

 

첫글자부터 시작하여 첫번째 글자를 찾으면 두번째 .. 마지막 글자까지  문자열을 찾아낸다.

위 코드의 로직으로는 첫글자를 지정해놓지 않으면 문자열을 찾을 수가 없다. 왜냐면 subject 내의 문자열 값이 'damin' 이라면 for 문을 통해 아스키코드의 65 값이 'A'로 변화되면서 첫번째문자를 A로 넣게된다. 또다른 이유는 해당(33~127)범위의 아스키코드 Chr값에 sql 와일드 카드값이 존재하기 때문이다.

 

아스키코드 표

sql 와일드 카드 문자는 아래의 표에 있다.

와일드 카드 문자 내용
% 0개 이상의 문자를 대체한다.
_ 단일 문자에 대해 대체한다.

여기서 '%', '_' 는 sql 쿼리 문에서 LIKE 연산자와 함께 사용된다.

와이드 카드 문자 LIKE 내용
where column like 'a%' 'a'로 시작하며 최소 1글자 이상인 값들
where column like '%b' 'b'가 마지막에 있는 값
where column like '_a%' 2번째 글자에 'a'가 있는 값
where column like '%a_' 뒤에서 두번째 글자가 'a' 인 값

아스키코드 표를 보면 37, 95에 % 와 _ 가 있으므로 for 문에서 해당 값을 집어 넣으면 원래 _ , % 가 아닌 값도 _ ,% 을 만나 와일드 카드를 출력할 수 있다. 

 

출력 화면

파이썬 코드를 실행하면 위와 같이 flag가 나온다. 하지만 그대로 가져가서 auth에 입력하면 해결이 안된다. 앞뒤의 _ 가 와일드 카드 문자로 표시된것이다. { 와 } 가 아스키코드 chr 값에서 _ 보다 뒤에 있어서 for 문을 돌면서 먼저 와일드 카드 문자가 입력된것이다. 해당 문자를 { , } 로 바꿔주면 문제 풀린다. 

 


문제핵심

 

1.sql 문의 와일드 카드 문자

2.request모듈을 이용한 스크립트 작성 

저작자표시 (새창열림)

'웹 > 웹 해킹 문제 풀이' 카테고리의 다른 글

webhacking.kr 5번 문제풀이  (0) 2023.02.06
webhacking.kr 4번 문제풀이  (0) 2023.02.02
webhacking.kr 43번 문제풀이  (0) 2023.01.07
webhacking.kr 41번 문제풀이  (0) 2023.01.07
webhacking.kr 37번 문제풀이  (0) 2023.01.05
'웹/웹 해킹 문제 풀이' 카테고리의 다른 글
  • webhacking.kr 5번 문제풀이
  • webhacking.kr 4번 문제풀이
  • webhacking.kr 43번 문제풀이
  • webhacking.kr 41번 문제풀이
-송현우-
-송현우-
  • -송현우-
    모험
    -송현우-
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • 웹 (66)
        • 취약점 진단 (5)
        • 웹 해킹 문제 풀이 (45)
        • 모의해킹 실무 과정 (15)
        • CS (1)
      • 모바일 (0)
      • 인프라 (10)
        • Infra 보안점검 (10)
      • 클라우드 (0)
      • 네트워크 (1)
        • 네트워크 기초 이론 (1)
      • 자격증 (12)
        • 정보보안기사 (2)
        • 정보처리기사 (2)
        • CPPG (1)
        • 리눅스마스터2급 (1)
        • bhpt (4)
        • 컴활 (1)
        • ISMS-P (1)
      • 개발 (16)
        • 백준 (12)
        • 게임 (3)
      • CTF (0)
      • OS (1)
        • linux (1)
      • 낙서장 (2)
        • 정리노트 (0)
        • 공부 계획 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    webhacking.kr
    불충분한 인가
    write-up
    주요정보통신기반시설 기술적 취약점 분석 평가 방법 상세 가이드
    wehacking.kr
    너의 평점은
    행렬덧셈
    webhacking
    2주차 정리
    webhacking.kr 43번
    webhacking.kr 21
    백준
    정보보안기사 합격 수기
    웹해킹
    불충분한 인증
    문제풀이
    bwapp
    WarGame
    2023년도 4회차 실기
    write up
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
-송현우-
webhacking.kr 56번 문제풀이
상단으로

티스토리툴바