모의해킹/Wargame
[Lord of SQL Injection] troll 8번 문제(feat. black list, white list)
klus!
2022. 12. 6. 08:58
0. 트롤
1. 문제 및 전체 코드
2. 주요 코드 및 해석
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]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("troll");
해당 문제를 보면 생각보다 간단하게 보입니다. 필터링되는 것들만 피해서, id=admin으로 넣으면 클리어가 되는 것 같아 보입니다.
문제는 두 번째 줄의 admin이 필터링되는데 이것을 어떻게 처리할래?라고 묻는 문제인 것 같습니다.
필터링이 블랙리스트 기반으로 되어 있어 대소문자를 섞어 id에 입력해보겠습니다.
3. 블랙리스트와 화이트리스트!
문제는 간단하지만 중요한 개념입니다. 아래 내용은 IT위키의 자료를 참고하여 작성하였습니다.
구분 | 화이트리스트 | 블랙리스트 |
정책 | 모두 차단인 상태에서 허용할 것을 지정 | 모두 허용인 상태에서 차단할 것을 지정 |
보안성 | 높음 | 낮음 |
가용성 및 편의성 | 낮음 | 높은 |