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 // 문제풀이 및 자동 형 변환 예시