URL 인코딩 2

[LOS] 문제 3. goblin, 따옴표 문자 필터링 우회

if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); preg_match 함수는 PHP 4, 5, 7에서 사용되는 함수이고, 정규표현식 중 하나로 이 함수는 패턴이 일치하는 검색 결과를 반환한다고 한다. 3번 문제는 이전 문제들과 같이 필터링을 하지만 한 개의 필터가 더 추가되었다. if(preg_match('/\'|\'/i', $_GET[no])) exit("No Quotes ~_~"); 즉 데이터베이스의 접근을 막기 위해 [ ', ", ' ] 이러한 따옴표 문자들을 필터링한다. 먼저 쿼리문을 살펴보면, id='guest'로 잡혀 있고, 우리가 입력할 수 있는 변수는 no이다. ?no=1을 넣었을 때의 화면 값은 우리가 이 문제를 해결..

Web/LOS 2018.10.26

[LOS] 문제 2. cobolt, 주석 URL 인코딩

pw=md5('') PW가 md5로 해서 암호화가 되어 있다. PHP 코드를 잠깐 보자. if($result['id'] == 'admin') solve("cobolt") 즉, 이 경우에는 쿼리에서 id가 admin이면 문제가 풀린다는 뜻이다. ?id=admin'%23 여기서 %23은 #(주석)의 아스키 코드의 인코딩 값으로 pw=md5('')를 무효화시켜주기 위해 반드시 필요하다. 만약 %23 대신 #(주석)을 넣으면 문제가 풀리지 않는데, ex) ?id=admin'# ( X ) 문자를 인코딩해서 넣어주어야하는 이유는 # 주석과 같은 것들은 URL 상에서 다양한 문제점을 일으킬 수 있기 때문에 반드시 URL 인코딩된 값을 넣어주어야 한다. 오라클 기반의 주석 처리는 #, MYSQL은 -이며, 또한 URL..

Web/LOS 2018.10.26