어딘가 이상한 로그인 서비스입니다.
SQL INJECTION 취약점을 통해 플래그를 획득하세요.
플래그는 flag.txt, FLAG 변수에 있습니다.
우선 로그인 창을 실행시킨다.
admin이나 userlevel을 입력했을 때 'wrong'이라고 출력된다.
따라서 코드를 분석해보아야 알 수 있다.
파일을 다운로드한 후 코드 분석을 진행한다.
< 파이썬 코드 살펴보기 >
if userid == 'admin' and user lever == 0:
return f'hello {userid} flag is {FLAG}'
부분을 통해서 userid가 admin이고 userlevel이 0일 때, flag를 얻을 수 있다는 것을 알 수 있다.
userlevel에 0을 입력하면 hello guest가 나온다.
and 연산자를 사용해서 userid가 admin이고 userlevel이 0인 쿼리로 공격을 시도한다.
res = query_db(f"select * from users where userlevel='{userlevel}'")
코드 중 위의 코드를 통해 아래와 같이 작성해볼 수 있다.
select * from users where userlevel'0' and userid='admin'
공격 Query 이용: 0'and userid='admin
로그인하면 플래그 값이 나오는 것을 알 수 있다.
Flag 값 : DH{chatGPT_told_me_a_lullaby}