취약점은 아래 53번줄에서 일어납니다.
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
이기만 하면 됩니다.
DH{c1126c8d35d8deaa39c5dd6fc8855ed0}