-
Authentication Bypass - Secret Loginwargame/segfault 2024. 6. 16. 20:05
이번에는 주어진 내용이 좀 다르다! 똑같이 doldol / dol1234 는 존재하지만 어떤 아이디로 로그인해야하는지가 나와있지 않다. 단순히 관리자 계정으로 로그인 하라고 되어있다. 물론 admin으로 가정하고 진행하는 것이 문제의 취지는 아닐 것이다.
그래서 일단 주어진 계정으로 먼저 로그인 하고 페이지를 살펴보려고 한다.
아래는 post 요청의 응답 데이터이다.
문제를 내신 분이 친절하게도 사용되는 sql문을 출력해서 보여주고 있다. 그러나 이것이 없더라도 문제풀이에 지장은 없다.
앞의 문제들에서 했던 것과 마찬가지로 다시 로그인 우회 인증이 되는지 확인을 해야한다.
로그인 우회 가능성 확인
이 데이터로 보내도 정상적으로 로그인이 되기 때문에 로그인 우회 가능성이 존재한다고 할 수 있다.
참고로 친절하신 서버 주인이 출력해주신 sql 질의문은 다음과 같다.
로그인 우회
우리는 어느 아이디로 로그인해야하는지 모르기 때문에 모든 사용자에 접근하여 하나씩 뽑아 확인할 수 있다.
# SELECT * FROM login1 WHERE id='___' and pass='___' 이므로 # id에 ' or '1'='1' # 을 삽입하면 # SELECT * FROM login1 WHERE id='' or '1'='1' # and pass='___' 이 되어 모든 데이터가 다 출력된다. # 그렇기에 뒤에 limit 키워드를 사용해 하나씩 출력할 수 있다. # 따라서 ' or '1'='1' limit 0,1 # 을 삽입하면 # SELECT * FROM login1 WHERE id='' or '1'='1' limit 0,1 # and pass='___' # 이 되어 가장 위에 있는 사용자의 데이터가 출력될 것이다.
비밀번호는 우회했기 때문에 아무것이나 입력해도 된다.
따라서 이것처럼 전송하면 로그인이 정상적으로 되면서
첫번째 사용자인 login_acc 로 로그인이 되었고, 다음으로 limit 0,1을 limit 1,1로 바꿔 두번째 사용자로 로그인해본다.
그러자 두번째 사용자로 로그인이 되면서 flag가 나온 것을 볼 수 있다!
참고로 계속 로그인 시도를 해본 결과 11개의 계정이 존재한다.
'wargame > segfault' 카테고리의 다른 글
SQL Injection - 2 (0) 2024.06.17 SQL Injection - 1 (0) 2024.06.17 Authentication Bypass - Login Bypass 5 (0) 2024.06.16 Authentication Bypass - Login Bypass 4 (0) 2024.06.16 Authentication Bypass - Login Bypass 3 (1) 2024.06.16