반응형
문제 8번 - troll
query : select id from prob_troll where id=''
<?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__);
?>
이번에도 마찬가지로 php코드가 주어져있다.
먼저 필터링 함수를 확인해보면 pw를 받는 변수에 '와 admin을 필터링하고 i를 통해 대소문자를 구별하지 않는 것을 확인할 수 있다.
<?php
if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match("/admin/", $_GET[id])) exit("HeHe");
?>
또 clear 조건을 확인하기 위해 조건문 코드를 확인해보면 result에 참인 값이 들어가면 되는 것이 아니라 result에 id가 admin이어야한다는 것을 알 수 있다.
<?php
$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__);
?>
필터링 함수와 조건문을 확인해보니 admin을 입력하지 않고 id를 admin으로 설정해줘야한다는 것을 알 수 있다. 이럴 때는 드디어 필터링함수에 추가로 붙어있는 i를 이용하는 것인데 i는 대소문자를 구별하지 않으므로 admin을 ADMIN 또는 몇 개를 대문자로 바꿔주면 된다. ex) adMin, ADmin 등
따라서 해당 주소 php 뒤에 id=ADMIN을 입력한다.
solve
https://los.rubiya.kr/chall/troll_05b5eb65d94daf81c42dd44136cb0063.php?id=ADMIN
반응형
'write-up > LOS write-up' 카테고리의 다른 글
LOS (Lord of SQL injection) 문제 10번 skeleton write-up (0) | 2021.07.06 |
---|---|
LOS (Lord of SQL injection) 문제 9번 vampire write-up (0) | 2021.07.06 |
LOS (Lord of SQL injection) 문제 7번 orge write-up (3) | 2021.07.06 |
LOS (Lord of SQL injection) 문제 6번 darkelf write-up (0) | 2021.07.06 |
LOS (Lord of SQL injection) 문제 5번 wolfman write-up (0) | 2021.07.06 |