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 |