Secret Login
관리자 계정으로 로그인하자! 그런데… 관리자 계정이 뭔지 모른다..!?
현재 우리의 계정은 다음과 같다. [ID/PW] : doldol / dol1234
burp suite로 헤더를 보니 post 방식으로 아이디 비밀번호를 보내고 있었다.
doldol’ and ‘1’=’1 / dol1234′ and ‘1’=’1 아이디와 비밀번호에 이렇게 넣어서 성공한 상태에서 관리자 계정을 모르니
모든 조건이 참이 되도록 아이디와 비밀번호에 ‘or ‘1’=’1을 보내보았다. 성공했다.
그리고 보통 관리자는 첫 번쨰 계정이기 때문에 그렇게 찾아야 하니 아이디 아무렇게 적고 비밀번호에만 ‘ or ‘1’=’1
SELECT * FROM users WHERE username = '$username' AND password = '$password'
이렇게 서버 스크립트에서 sql 문을 이렇게 준비했다고 가정하면
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1'
‘1’=’1 은 항상 참이고 or로 둘 중 하나만 맞아도 되기 때문에 아이디와 비밀번호 몰라도 무시하고 로그인이 가능하다.
그러면 보통 데이터베이스에서 첫 번째에 있는 행의 값을 보내준다.
login_acc라는 유저가 나왔다. 관리자 계정이 아니었다.
보통 관리자는 첫 번째 계정이지만 아닐 수도 있었다.
' OR '1'='1' LIMIT 1 OFFSET 1--
그래서 limit로 행 1개 불러오고 offset 1으로 두 번째 행을 불러와 보았다.
or 앞쪽은 모두 참 이 되게 하였고 –로 뒤쪽은 주석 처리하여 아이디나 비밀번호 아무 곳이나 넣으면 된다.