Almon Dev

[Lord of SQL Injection] troll 풀이 본문

모의해킹/Lord of SQLi

[Lord of SQL Injection] troll 풀이

Almon 2025. 1. 6. 18:15

LOS 풀이

 

troll

 

 

풀이

1. 코드 분석

GET 메서드 id 파라미터를 쿼리에 삽입한 뒤 쿼리 결과의 id가 admin이면 문제가 풀립니다.

$query = "select id from prob_troll where id='{$_GET[id]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("troll");

 

admin이라는 문자열을 필터링합니다.

그런데 i 플래그를 붙이지 않아서 대소문자를 구분합니다.

mysql은 대소문자를 구분하지 않기 때문에 Admin과 같이 대문자를 섞으면 우회가 가능해 보입니다.

if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match("/admin/", $_GET[id])) exit("HeHe");

 

 

 

2. 쿼리 삽입

admin 대신 Admin을 이용해서 필터링을 우회할 수 있습니다.

select id from prob_troll where id='Admin'