web_security/Lord Of SQL

[LOS : Lord Of SQL Injection] 9번 Vampire 문제 풀이

HawordFREAKEK 2022. 6. 4. 15:56

네 안녕하세요. Godhaword 입니다.

뭐 일 쌓아놓고 다른거 못하는 편이라.. 막 무자비하게 어려운 문제가 나오지 않는 한 쭉쭉 글을 쓸 것 같습니다.
짧은 글은 귀찮아서 짧게 쓰는게 아니라 진짜 설명할께 없는 기본기 관련 문제인점 알려드립니다.

<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
  $_GET[id] = strtolower($_GET[id]);
  $_GET[id] = str_replace("admin","",$_GET[id]); 
  $query = "select id from prob_vampire where id='{$_GET[id]}'"; 
  echo "<hr>query : <strong>{$query}</strong><hr><br>"; 
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id'] == 'admin') solve("vampire"); 
  highlight_file(__FILE__); 
?>

일단 함수부터 살펴봅시다.

 

  $_GET[id] = strtolower($_GET[id]);
  $_GET[id] = str_replace("admin","",$_GET[id]);

사실 이 함수에서 strtolower()를 통해 GET 파라미터로 받은 id 값이 모두 소문자로 변하게 됩니다.
그 이후 replace하는거라 사실상 ireplace 한다고 볼 수도 있습니다.

하지만 제가 str_replace를 저런 방식으로 하는건 매우 큰 보안에 취약하다고 했었는데요.

https://godhaword.tistory.com/472
https://godhaword.tistory.com/473

 

[WebHacking] SQLI(SQL Injection) 이란?(New)

네 안녕하세요. Godhaword 입니다. 원래 1주일에 하나 정도 쓸까 생각했는데 XSS 이야기 하면서 SQL Injection 이야기를 너무 비중있게 다뤘더라구요. 예전에 글을 썼던 2019년의 제가 생각하던 웹 해킹(We

godhaword.tistory.com

 

[WebHacking] SQLI(SQL Injection) 필터링 우회 및 기법 총 정리

네 안녕하세요. Godhaword 입니다. 저번에 SQLI 관련 글을 쓰면서 큰 기초 뼈대 위주로 설명을 드렸습니다. https://godhaword.tistory.com/472 [WebHacking] SQLI(SQL Injection) 이란?(New) 네 안녕하세요. Godh..

godhaword.tistory.com

 

필터링 및 우회 기법에 자세하게 적혀있는 내용 입니다.

 

 

  • 이 문제로 알 수 있는 점
    - 저렇게 replace 쓸꺼면 걍 쓰지 말자.
    - strtolower 함수는 단어를 소문자로 바꾼다.
  • Key Point
  •  
adadminmin

replace를 쓸꺼면 replace("admin","nono",params) 와 같이 대체자를 명시해주자