[Solved in under 3 minutes]
오랜만에 글을 쓴다..
취준으로 많이 힘든 시기를 보내고 있다.
오펜시브 쪽으로 취업이 됐지만 잘 할 수 있을까 걱정이 너무 많다...
잘 버텨 보자.
거두절미하고 문제를 풀어봅세

<?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__);
?>
여기서 봐야 할 가장 큰 포인트는 pw는 md5로 값이 들어간다.
그러하니 어렵게 생각하지 말고 id가 admin 되는 방법을 생각해보자.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
preg_match로 필터링이 주어진 것을 보면 admin에 대한 입력값이 하나도 없으므로 바로 admin으로 때려보자.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
?id=admin' %23
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
를 삽입하였더니 역시 손쉽게 되었다.
원리는 이렇다 id는 admin을 삽입하였고 뒤에 싱글쿼터로 닫아주고 그 뒤는 전부다 주석처리로 당장 id만 받는 로그인 형식이 되어 버린것이다.
이제 정말 velog를 꾸준히 써보려고 한다.
하나부터 열까지 미래를 위해서 노력해보자.
LoS(Lord of SQL Injection) Cobolt Write-up
이상 보고 끝!