P_Squirrel
Squirrel Hack
P_Squirrel
전체 방문자
오늘
어제
  • 분류 전체보기 (428)
    • Wargame(Web) (173)
      • Webhacking.kr Writeup (58)
      • DreamHack Writeup (64)
      • Lord of SQLInjection (40)
      • Websec.fr (2)
      • Webgoat (1)
      • G04T war (7)
    • Wargame(Pwnable) (94)
      • DreamHack Writeup (68)
      • pwnable.xyz Writeup (20)
      • G04T war (6)
    • Wargame(Reversing) (26)
      • DreamHack Writeup (26)
    • Wargame(crypto) (6)
      • DreamHack Writeup (6)
    • Wargame(DigitalForensic) (41)
      • CTF-D Writeup (28)
      • DreamHack Writeup (6)
      • Suninatas Writeup (7)
    • Wargame(misc) (4)
      • DreamHack Writeup (4)
    • DreamHack CTF (21)
    • ångstrom CTF (6)
    • AmateursCTF (2)
    • BDSec CTF (5)
    • Hspace war (1)
    • Reference (42)
      • Language_Study (10)
      • Pwnable_Study (24)
      • Web Hacking_Study (3)
      • Linux (2)
      • Windows Kernel (1)
    • 자격증 공부 (2)
      • 정보처리기사 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
P_Squirrel

Squirrel Hack

Wargame(Web)/Webhacking.kr Writeup

Webhacking Wrietup 46번 문제

2022. 8. 13. 16:32

Webhacking Wrietup 46번 문제입니다.

사이트에 접속하면 SQL 인젝션이라고 친절하게 알려줍니다.

 

아래의 소스코드가 있으니 들어가 보겠습니다.

봐야할 부분만 캡쳐해봤습니다.

해석하면 add슬래시 라는 함수가 우리가 입력할 값 lv에 (' , ")같은 쿼터를 없애고

공백, / , * , %를 아예 지워버리는 것을 확인 할 수있습니다.

또한 아래 필터링으로는 select, 0x, limit, cash를 막아놓았습니다.

 

먼저 lv값을 1이 자동입력되어 있어 입력해보니

lv=4 까지는 값이 존재하는 것을 확인 할 수 있었습니다.

그러나 우리가 찾아야 하는 값은 id=admin 인 경우인데

여기서 where 조건문을 추가하는 경우를 이용해 and나 or을 사용해야합니다.

 

즉 구문을 정리하면

"select id,cash from chall46 where lv=$_GET[lv]"
"select id,cash from chall46 where lv=$_GET[lv] or id='admin'"

2번째 줄처럼 id값을 추가해 id=admin인 경우로 인젝션 하는 것입니다.

그러나 공백은 이전에 말한대로 막혀있으니

위 사진을 토대로 +를 사용하기로 했습니다.

값이 존재하지 않는 False를 출력할 수 있는 lv=6

공백 부분을 +로 연결하면

아래와 같이 정리가 가능합니다.

lv=6+or+id='admin'

여기서 문제는 add슬래시가 ' ' 를 없애기에 

싱글쿼터 또한 없애야 합니다.

해서 처음에는 16진수를 생각했으나 필터링에 0x가 걸려있어 실패...

찾아보니 char(97,100,109,105,110) 형태도 가능하더라구요

 

아래와 같이 정리해서 삽입을 시도해봤습니다.

lv=6+or+id=char(97,100,109,105,110)

 

그런데...네 안됩니다...

아마도 예상이지만 + 가 어떠한 다른것으로 치환되면서

우회가 안되는 것으로 예상이 됩니다.

 

결국 다시 공백우회를 키워드로 검색하다보니

다른 방식을 찾았습니다.

괄호를 활용한 방식이더라구요

+대신 ( )를 사용해서 작성해보면

아래처럼 작성이 가능해집니다.

lv=(6)or(id=char(97,100,109,105,110))

 

이것을 삽입해보면

문제가 해결되었습니다!!

'Wargame(Web) > Webhacking.kr Writeup' 카테고리의 다른 글

Webhacking Writeup 20번 문제  (0) 2022.08.13
Webhacking Writeup 49번 문제  (0) 2022.08.13
Webhacking Writeup 54번 문제  (0) 2022.08.12
Webhacking Writeup 58번 문제  (0) 2022.08.12
Webhacking Writeup 5번 문제  (0) 2022.08.12
    'Wargame(Web)/Webhacking.kr Writeup' 카테고리의 다른 글
    • Webhacking Writeup 20번 문제
    • Webhacking Writeup 49번 문제
    • Webhacking Writeup 54번 문제
    • Webhacking Writeup 58번 문제
    P_Squirrel
    P_Squirrel

    티스토리툴바