취약점은 아래 53번줄에서 일어납니다.

Screenshot 2024-05-31 at 4.13.58 PM.png

res = query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}"')

SQL문제 userid 와 userpassword, 즉 유저의 입력값이 파라미터화 하지 않고 구문에 그대로 들어갑니다.

userid 는 admin" --으로, userpassword 는 아무 값을 주게 되면 어떻게 될까요?

select * from users where userid="admin" --and userpassword="Hello Layer7!"

위 구문에서 — 뒤로 주석처리가 됨을 알 수 있습니다. 따라서 비밀번호에 상관 없이 userid 가 admin 이기만 하면 됩니다.

Screenshot 2024-05-31 at 4.21.01 PM.png

DH{c1126c8d35d8deaa39c5dd6fc8855ed0}