5번 - sql injection

2020. 9. 30. 18:40

※ 문제될 시에 비공개 처리하도록 하겠습니다. ※

 

 

첫 화면입니다.

로그인과 회원가입이 있네요.

코드를 보니 회원가입은 안되고 로그인만 되는 것 같습니다.

로그인을 클릭해보겠습니다.

 

 

흔히 볼 수 있는 로그인 창이 뜹니다.

여기에 여러가지 sql injection을 시도해보았지만 역시나 안됩니다.

뭘까요?

그런데, 주소창에 디렉터리처럼 보이는 경로가 있었습니다.

 

 

mem 디렉터리 안에 login.php가 있음을 예측할 수 있습니다.

상위 디렉터리로 가보겠습니다.

 

 

mem 디렉터리 안의 내용물들이 나오네요.

join.php도 보입니다.

join.php에 접속해보겠습니다.

 

'bye'라는 문자열이 alert되고 아무런 창도 뜨지 않습니다.

자바스크립트를 확인해보니 'bye'라는 alert가 뜨게 하는 코드, 'Access denied'라는 alert가 뜨게 하는 코드가 있었습니다.

이 부분은 if 문으로 처리되어있으니 없애고 개발자 도구의 Console 창을 이용해 자바스크립트를 다시 실행해보겠습니다.

이유는 html 문서가 자바스크립트 내에 있기 때문입니다.

 

 

회원가입 창이 성공적으로 나왔습니다.

이제 admin이라는 아이디로 회원가입 해보겠습니다.

 

 

'id already existed'라는 문구가 뜨며 웹 사이트 단에서 이미 있는 id인지 검사하는 것 같습니다.

 

이 부분에서는 burp suite를 사용할 것입니다.(NULL을 입력하기 위해 '%00'을 입력 시 '%'를 인코딩하여 '%25'로 바뀜. 따라서 프록시를 이용해 아예 '%00'으로 데이터를 보냄.)

또한, PostgreSQL과 Oracle을 제외하고는 문자열 비교 시에 PAD 방식을 사용하기 때문에 'admin'과 'admin '을 같다고 판단합니다. 이에 대한 자세한 내용은 woowabros.github.io/study/2018/02/26/mysql-char-comparison.html에 나와있으니 들어가보시는걸 추천드립니다.

 

이걸 이용해서 'admin '의 아이디로 회원가입해보겠습니다.

 

 

회원가입이 성공적으로 이루어졌습니다.

이제 로그인 페이지로 조작해 똑같이 보내봅시다.

 

 

admin으로 로그인 되었습니다.

'[▒] 보안 > webhacking.kr' 카테고리의 다른 글

7번 - sql injection  (0) 2020.10.02
6번 - JS 조작  (0) 2020.09.30
4번 - brute force  (0) 2020.09.30
3번 - sql injection  (0) 2020.09.22
2번 - blind sql injection  (0) 2020.09.22

BELATED ARTICLES

more