[Lord of SQLInjection] Goblin Write UP
2021. 7. 6. 08:01
워게임/Lord of SQLInjection
쿼리문을 보자마자 생각나는 방법이 하나 있다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); id 파라미터가 쿼리문에 하드코딩 되어 있어서 id의 검증은 따로 없었다. 하지만 no 파라미터의 경우 prob, _, ., (), ', ", `에 대해서 검증하고 있었다. $query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result[..
[Lord of SQLInjection] Coblt Write UP
2021. 7. 5. 07:09
워게임/Lord of SQLInjection
Gremlin 문제와 문제 풀이는 같으므로, 현재 코드 상에서 문제점 설명과 방어 방법을 설명하겠다. include "./config.php"; login_chk(); $db = dbconnect(); DB 연결에 필요한 정보와 로그인이 되었는지 확인하는 함수, DB 연결하는 코드이다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database! if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); GET 메소드로 id와 pw를 받고 있다. 또한 입력받은 값은 prob, _, ., ()이라는..
[Lord of SQLInjection] Gremlin Write UP
2021. 7. 5. 07:00
워게임/Lord of SQLInjection
문제를 보니, Webhacking.kr에서 풀이하였던 문제와 굉장히 유사하여 쉽게 풀 수 있었다. 코드를 분석하자면, include "./config.php"; login_chk(); $db = dbconnect(); DB 연결에 필요한 정보와 로그인이 되었는지 확인하는 함수, DB 연결하는 코드이다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~"); // do not try to attack another table, database! if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); GET 메소드로 id와 pw를 받고 있다. 또한 입력받은 값은 prob, _,..