반응형
문제 2번 - cobolt
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__);
?>
문제 1번과 마찬가지로 php코드가 주어졌다. 코드가 주어지면 좋은 점이 필터링함수를 통해 무슨 표현을 필터링하는지 또 어떤 조건을 충족시켜야 clear가 되는지 알 수 있다는 것이다.
먼저 필터링 함수를 확인해보면 문제 1번과 마찬가지로 prob와 _ , . , ( , ) ,을 필터링하고 i를 통해 대소문자를 구별하지 않는 것을 확인할 수 있다.
<?php
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
?>
또 코드를 계속 확인해보면 result에 참인 값이 들어가면 되는 것이 아니라 result에 id가 admin이어야한다는 것을 알 수 있다.
<?php
$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__);
?>
1번처럼 그냥 result에 참인 값이 들어가면 다른 아이디와 admin이 아니라는 문구가 뜬다는 것을 확인할 수 있다.
따라서 id를 admin으로 한 후 참인 값을 집어넣어 $result['id'] == 'admin'이라는 조건을 만족시킨다.
1번과 마찬가지로 원하는 문장 이후에는 주석처리를 의미하는 #을 입력한다. url에서 입력하므로 #을 의미하는 %23을 사용한다.
따라서 해당 주소 php 뒤에 ?id=' or id='admin' and 1=1 %23을 입력한다.
solve
https://los.rubiya.kr/chall/cobolt_b876ab5595253427d3bc34f1cd8f30db.php?id=%27%20or%20id=%27admin%27%20and%201=1%20%23
반응형
'write-up > LOS write-up' 카테고리의 다른 글
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 |
LOS (Lord of SQL injection) 문제 4번 orc write-up (0) | 2021.07.06 |
LOS (Lord of SQL injection) 문제 3번 goblin write-up (0) | 2021.07.06 |
LOS (Lord of SQL injection) 문제 1번 gremlin write-up (0) | 2021.07.05 |