본문 바로가기

웹 해킹 (Web)/webhacking.kr

[webhacking.kr] 웹해킹.kr old-59번 (200)

728x90
반응형

이번에는 webhacking.kr의 old-59번 문제입니다. 데이터베이스를 이용하는 문제고 200점이 배점되어 있습니다.

 

문제에 들어가면 위와 같은 로그인 폼이 나옵니다. 위에 JOIN으로 된 회원가입 폼도 보입니다. 소스 코드를 보겠습니다.

 

위쪽이 로그인 폼, 아래쪽이 회원가입 폼입니다.

 

회원가입 폼을 먼저 살펴보면, addslashes() 함수로 id와 phone의 보안을 강화해줍니다.

 

phone이 20글자 이상이 되면 안 되고, preg_match() 함수로 여러 문자열들을 필터링하고 있습니다.

 

조건이 완벽하다면 쿼리문으로 값들을 chall59 테이블에 insert 해줍니다. 쿼리문 마지막의 guest가 lv 같습니다.

 

그리고 위쪽 로그인 폼에서 chall59 테이블에서 id와 lv를 select해옵니다.

 

select해오는 lv가 admin일 경우 문제가 해결됩니다. 

 

회원가입 폼에서 강제로 lv을 1로 만들고, 괄호를 닫아 뒷부분을 주석처리하면 될 것 같습니다.

 

여러 문자열들이 필터링되므로 reverse() 함수를 사용하여 보겠습니다.

 

위와 같이 입력하면 회원가입 쿼리문이 다음과 같이 입력됩니다.

 

insert into chall59 values('nimda',0, reverse(id))-- ,'guest')

 

이렇게 입력하면 id는 nimda, password는 0, lv는 admin으로 회원가입 할 수 있습니다. 

 

주석 처리 (--) 뒤에는 공백 붙여주는 것을 잊지 마세요.

 

 

728x90
반응형