해킹/웹해킹

[LOS] 1번 gremlin write up

2021. 6. 6. 02:14
목차
  1. LOS란..?
  2. 풀이 과정
  3. 풀이 과정
  4. %23이 뭔가요?
  5. URL 인코딩이란?
728x90

https://los.rubiya.kr/gate.php <- 여기서 푸실 수 있습니다!


LOS란..?

이 LOS(Lord Of SQLInjection)은 SQLInjection를 실습할 수 있는 웹 해킹 실습 사이트입니다.

SQL Injection에 관한 건 [해킹/웹 해킹] - SQL Injection 이 글을 읽어주세요~ㅎ

 

풀이 과정

맨 처음이니 하나하나 해석을 하자면 1~4까지는 딱히 필요가 없고 5~6번째 줄부터 해석하자면...

if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");

우리가 모르는 "preg_match"이란 것이 눈에 들어오는데요 이게 뭘까요?

 

preg_match란?

PHP에선 preg_match함수를 사용하여 정규식 표현을 작성합니다.

 

첫 번째 인수 : 정규식 표현 작성,

두 번째 인수 : 검색 대상 문자열,

세 번째 인수 : 배열 변수 반환. 패턴 매치에서 매칭 된 값을 배열로 저장하는 것입니다.

 

정규식 표현이란?

[해킹/웹 해킹] - 정규표현식 / 주로 사용하는 정규표현식에서 읽어주세요!

이걸로 인해 사용자가 입력한 id값에서 'prob', '_', '.', '\' 이란 값이 존재할 때 "No Hack ~_~"이란 화면이 나온다.

 

그리고 위 PHP문을 보면 입력값을 GET방식으로 받는 것을 알 수 있습니다. GET방식으로 받게 되면 피라미터(URL)에 입력값이 그대로 노출되게 됩니다.

$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";

7번째 줄은 굉장히 많이 봤던 SQL 구문입니다. 데이터베이스에서 입력받은 id와 pw에 대한 값을 찾아 $query에 저장하는 쿼리문입니다.

echo "<hr>query : <strong>{$query}</strong><hr><br>";

8번째 줄은 그 쿼리문을 우리에게 보여주는 역할이네요!

$result = @mysqli_fetch_array(mysqli_query($db,$query));

9번째 줄은 입력받은 $query값을 배열로 $result에 저장하는 쿼리문입니다.

if($result['id']) solve("gremlin");

10번째 줄은 $result ['id']에 값이 들어가 있다면 solve("grelin'"; 가 실행되는 것 같습니다.

 

풀이 과정

다시 한번 글을 보자면 $result ['id']가 참이 되면 풀리는 문제입니다! 값을 넣는 방법은 URL끝에 "? id=값&pw=값"이런 식으로 적어주시면 됩니다.

 

그렇다면 앞에서 배운 대로 SQL Injection를 시도해 볼까요? 사람마다 매우 다양한 답이 나오고 어떤 방법을 사용하던 Clear만 된다면 맞는 방법일 겁니다. 다양한 방법으로 시도해 보세요!

 

$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";

이 쿼리문을 보게 되면 만약 우리가 id=1234 pw= 1234를 입력하게 되면 select id from prob_gremlin where id='1234' and pw='1234' 

이런 식으로 입력이 될 것입니다. 그렇다면 ' or 1=1 %23이라고 적어 넣게 되면?

select id from prob_gremlin where id='' or 1=1 #' and pw=''

위와 같이 id가 참이 되어 이 문제는 클리어가 될 것입니다.

 

%23이 뭔가요?

%23을 적었을 때 출력되는 카레 문은 어떻게 뜨셨나요?

이런 식으로 #으로 뜨셨을 겁니다. 이건 URL encoding이라고 합니다.

 

URL 인코딩이란?

URL 인코딩(Encoding)

  1. 문자나 특수문자를 웹 서버와 브라우저에서 보편적으로 허용되는 변화하는 메커니즘입니다.
  2. URL은 ASCII 문자 집합을 사용하여 인터넷을 통해서만 전송할 수 있습니다.
  3. URL은 종종 ASCII 세트 외부의 문자를 포함하기에 URL은 유효한 ASCII형식으로 변환되어야 합니다.
  4. URL 인코딩은 안전하지 않은 ASCII 문자를 "%" 다음에 두 개의 16진수로 대체합니다.
  5. URL은 공백을 포함할 수 없습니다. URL 인코딩에서는 일반적으로 공백을 (+ 기호) 또는 %20으로 대체합니다.

위와 같이 %23은 #을 나타냅니다. #을 쓰는 이유는 제 SQL Injection 블로그를 보신 분이라면 아시겠지만 뒷부분을 전부 주석 처리하기 위해서입니다.

 

"--"이게 주석 아닌가요?라고 물어보실 수 있는데 그것도 제 블로그에  이건 MYSQL을 사용하기 때문에 주석이 #인 것입니다. --은 Oracle, MSSQL에서 작동합니다.

 

이렇게 1단계 gremlin를 클리어하였습니다!!! 수고하셨습니다~

 

+다른 풀이, 팁

단순하게 id와 pw값 모두 참으로 만들어 버리면 풀립니다.

  1. id=' or '1'='1&pw=' or '1'='1
  2. pw=' or 1=1%23
  3. id=' or id='1' and pw='1' or 1=1%23

위와 같이 여러 가지 풀이가 나올 수 있다!

 

URL Encoding값은 인터넷 표와 코딩을 통해서 일일이 확인할 수도 있지만 사이트를 통해서 얻을 수 있습니다.

예를 들면 https://meyerweb.com/eric/tools/dencoder/ 이런 사이트를 통해서 얻을 수 있습니다.

 

 

 

참고 :

https://choseongho93.tistory.com/131

https://webkid.tistory.com/2

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

'해킹 > 웹해킹' 카테고리의 다른 글

[LOS] 3번 goblin write up  (0) 2021.06.06
[LOS] 2번 cobolt write up  (0) 2021.06.06
정규표현식 / 주로 사용하는 정규표현식  (0) 2021.06.06
SQL Injection  (0) 2021.06.03
xss-game level3 write up  (0) 2021.06.02
  1. LOS란..?
  2. 풀이 과정
  3. 풀이 과정
  4. %23이 뭔가요?
  5. URL 인코딩이란?
'해킹/웹해킹' 카테고리의 다른 글
  • [LOS] 2번 cobolt write up
  • 정규표현식 / 주로 사용하는 정규표현식
  • SQL Injection
  • xss-game level3 write up
나봄하랑
나봄하랑
저의 IT 성장을 담은 블로그 입니다!
나봄하랑
나의 IT 성장일지
나봄하랑
전체
오늘
어제
  • 분류 전체보기 (60)
    • 기능반공부 (26)
      • 서버 (6)
      • 네트워크 (6)
      • 클라우드 컴퓨팅 (12)
      • 기능경기대회 (2)
    • 알고리즘 (7)
      • 자료구조 (4)
      • C, C++ (3)
      • python (0)
    • 해킹 (22)
      • 웹해킹 (7)
      • 리버싱 (7)
      • 시스템해킹 (8)
    • 게임이론 (0)
      • 체스 (0)
      • 마작 (0)
    • 웹개발 (1)
      • 웹(HTML, CSS, JS) (1)
    • 공부 (4)
      • 영어 (3)
      • 과학 (0)
      • 국어 (1)
      • 한국사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • about

공지사항

인기 글

태그

  • server
  • SSM
  • computing
  • CTF
  • 리버싱
  • CC
  • Network
  • injection
  • reversing
  • 버그
  • 클라우드
  • 백준
  • 클컴
  • BOF
  • Los
  • 서버구축
  • 모의고사
  • 해킹
  • Cloud
  • 아마존
  • grabcon
  • 레지스터
  • 네트워크
  • 컴퓨팅
  • AWS
  • 시스템해킹
  • 스트링
  • computting
  • SQL
  • FSB

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
나봄하랑
[LOS] 1번 gremlin write up
상단으로

티스토리툴바

개인정보

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

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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