article thumbnail image
Published 2021. 8. 24. 19:30

 

nightmare 입장!

nightmare에서는 pw파라미터만 사용하고 있다.

이번 query는 id가 admin이 아니어야 한다고 명시하고 있고, pw에 빈 문자열이 들어있다.

문제를 해결하기 위해서는 query의 결과로 id가 존재해야 하기 때문에 query를 참으로 만들기만 하면 된다.

그러기 위해 id부분을 주석처리하고, pw부분에서 1=1과 같은 payload를 삽입해서 query를 참으로 만들려고 했다.

 

 

 

문제는 pw 삽입 부분이 문자열이기 때문에 기존처럼 1=1 #을 사용하긴 어렵다.

여기서 MySQL의 auto type cast를 이용하면 참 쿼리를 만들 수 있다.

문자열과 숫자를 비교하게 되면 문자열을 0으로 변환하여 비교하는 특성이 있기 때문에 pw를 ('')=0 형식으로 변환했다.

 

 

 

그런데 뒤에 주석 처리를 위한 #문자가 필터링되고 있기 때문에 다른 방법을 이용해서 주석 처리했다.

('')=0;%00

 

 

 

그리고 조건문에 위해서 pw파라미터 값이 6을 넘기면 안되는데 지금까지 작성한 payload가 딱 ')=0;%00 6자리가 된다.

이제 payload를 전달해주면

 

nightmare 해결!

 

 

 

 

'Study > Web Hacking' 카테고리의 다른 글

[Webhacking.kr] old-07  (0) 2021.09.11
[natas] Level 26 -> Level 27  (0) 2021.08.24
[natas] Level 25 -> Level 26  (0) 2021.08.22
[LOS] zombie assassin  (0) 2021.08.19
[natas] Level 24 -> Level 25  (0) 2021.08.09
복사했습니다!