WarGame/Lord of SQL Injection
[Lord of SQL Injection] goblin 3번 풀이
[Lord of SQL Injection] goblin 3번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id와 no파라미터가 존재하고, 이를 통해 DB를 조회한다 2. $_GET[no] : GET방식을 통해서 no를 입력을 받는다 3. 5,6번 줄에서 $_GET[no] 을 통해 입력받은 데이터에 ' , " 를 검사하고 필터링함 4. if($result['id'] == 'admin') : 질의 결과 id가 admin일 경우 solve("goblin")을 시켜줌 => 방법 1 : id에 admin을 문자열 인코딩을 통해 입력 => 방법 2 : id에 admin이라는 문자열을 내장함수를 사용해 입력 [ 문제풀이 ] 더보기 지금까지 문자열을 넣을때 사용했던 방식인 '문자열'을 사용해서 문자열을 넘겨주려 했으나, ' " 을 필터링하고 있다. 따라서 우리는 기존방식이 아닌 다른 방식으로..
[Lord of SQL Injection] cobolt 2번 풀이
[Lord of SQL Injection] cobolt 2번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id와 pw파라미터가 존재하고 pw를 md5 암호화, 이를 통해 DB를 조회한다 2. $_GET[id], md5('{$_GET[pw]}') : GET방식을 통해서 id와 pw를 입력받고 pw는 md5암호화 3. if($result['id'] == 'admin') : 쿼리문 질의 결과의 id가 admin일 경우 solve 시켜준다 > 방법 1) md5를 우회해서 입력 > 방법 2) id에서 admin을 입력 후 주석처리하여 뒤에 존재하는 조건을 무시 [ 문제풀이 ] 더보기 : ?id=admin%27%23 정답1은 주석을 활용한 방법이다. ?id=admin'# admin뒤에 '를 붙여 문자열을 탈출하고 #을 적어줌으로써 뒤에 존재하는 쿼리를 모두 주석처리할 수 있다. 하지만 ?..
[Lord of SQL Injection] gremlin 1번 풀이
[Lord of SQL Injection] gremlin 1번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id와 pw파라미터가 존재하고, 이를 통해 DB를 조회한다 2. $_GET[id], $_GET[pw] : GET방식을 통해서 id와 pw를 입력을 받는다 3. if($result['id']) solve("gremlin"); : DB에 id와 pw가 일치하고 그 결과가 참일경우, 즉 쿼리 질의결과 참인경우 solve(gremlin)를 시켜준다 => 정리 : 우리는 쿼리문을 통한 질의에서 항상 참을 반환하도록 하면 된다 [ 문제풀이 ] 더보기 : ?id=0&pw='1'or'1 select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}' {$_GET[id]}와 {$_GET[pw]} 자리에 우리가 입력한 값이 들어..