[Solved in under 15 minutes]
밥 먹고 다시 왔다.
가보자

<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match("/admin/", $_GET[id])) exit("HeHe");
$query = "select id from prob_troll 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("troll");
highlight_file(__FILE__);
?>
일단 코드를 설명하자면,
인자를 id로만 받고, 싱글쿼터('), admin이 막혀있다.
select id from prob_troll where id=''
이렇게 되어 있으니 1' or id=admin # 이렇게 나와야 한다.
하지만 싱글쿼터랑 admin이 필터링 걸려 있으니
1'(우회한 싱글쿼터) or id=char(97,100,109,105,110) %23
이렇게 생각하여 싱글쿼터 우회하려고 별에 별거 다 하다가
딱 띵하게 눈에 들어온게 있다.
if(preg_match("/admin/", $_GET[id])) exit("HeHe");
이 녀석 대소문자 구별을 안한다.
Admin, aDmin ... AdmIN 뭐 이런 구조로 별에 별게 다 된다는 소리다...
삽입해보자

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
?id=Admin
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
그냥 허 ㅋㅋ
풀고도 한참 이게 뭐지 이런 생각이 들었다.
너무 어렵게 생각했나보다.
잠깐 쉬어가세요~ 문제였는데 혼자서 별에 별 생각 다 했다.
아 그리고 이 문제 Mac에서 chrome으로 시도하면 안풀린다 이유는 모른다
데스크탑으로 문제 풀고 Write-up 작성하러 맥 켰는데 똑같은 방법인데 안풀리는거임?
그래서 나는 Burp Suite의 Chromium으로 풀었다.
풀었는데도 기분이 별 좋지 않다 :)
LoS(Lord of SQL Injection) Troll Write-up
이상 보고 끝!