writeup/LOS
[Lord of SQL injection] nightmare
hoppi
2021. 7. 19. 16:16
53번째 글.
1. 코드 분석
strlen() 함수는 바이트 기준으로 문자열의 길이를 알려주는 함수이다.
한글과 영어일 때 같은 문자열의 길이를 입력해도 서로 다르다.
어쨌든 길이가 6 이상이면 'No Hack ~_~'을 출력한다.
2. Exploit
MySQL의 자동 형 변환을 이용해서 풀 수 있다.
서로 다른 데이터의 타입을 조회할 시 같은 타입으로 형 변환을 하여 비교하게 된다.
결론적인 핵심만 말하면 문자는 숫자 0과 같다라는 것을 기억하면 된다.
?pw=')=0;%00
이렇게 보내주면 문자 또는 0으로 시작하는 pw가 조회될 것이고
세미콜론과 널바이트로 쿼리를 종결해 줄 수 있다.
Reference
https://limjunyoung.tistory.com/121 // MySQL 자동 형 변환
https://kkamikoon.tistory.com/192 // 문제풀이 및 자동 형 변환 예시