simple_sqli

- 로그인 페이지 외 주어진 정보는 없기 때문에, 바로 소스코드 분석을 진행해 보게씁니다.

- 일단 VM을 실행하면
guest, admin계정이 생성되는 걸 확인했습니다. guest계정 정보는 모두 공개 됐으니,admin계정으로 로그인을 하는 걸 목표로 해야 할 것 같네요.
- 로그인 기능에 대한 서버 측 코드는 아래 부분입니다.
- 입력 받은 아이디/패스워드와 일치하는 계정이 DB에 있는지 확인하고
- 아이디가
admin인 경우에 플래그를 반환해주고 있네요.

- 그런데 코드를 살펴보니, 쿼리문에 사용되는 파라미터가 바인딩 처리되지 않아 취약해 보입니다.

- 아래와 같이 SQLi 페이로드를 입력하여 로그인 인증 우회를 시도해보겠습니다.
select * from users where userid="admin"%20--" and userpassword="{userpassword}"
- BOOOOOOOOOOOOOOM!!! 플래그 획득에 성공했습니다.

- SQLi에서는 주석문이 많이 활용되는데, 이건 DB 종류에 따라서 —, # 등 사용 방식이 다릅니다.
- sqlite 의 경우에는
--가 주석으로 활용되나 보군요.

🐛.. 🐛.. 🐛..