WarGame/Lord of SQLInjection (4) 썸네일형 리스트형 ORC - 4 문제 접속 시계정은 관리자로 고정돼 있고, 비밀번호만 값으로 받는 로그인 로직을 볼 수 있다.?pw=1234' or id='adminor 쿼리를 통해 id 값을 인젝션 했다.hello admin 이라는 문구를 볼 수 있었다. 하지만, 그 아래 로직에서DB에 저장된 비밀번호와 공격자가 입력한 비밀번호를 비교·검증하는 구문을 통과해야만문제가 solve 되는 것으로 보인다.처음엔 어떤 방식으로 접근해야 할지 고민했지만인젝션한 쿼리가 참일 시,"Hello admin"이라는 결과가 출력되는 것을 통해 Blind SQLi를 시도할 수 있겠다는 생각을 했다.?pw=1234' or id='admin' and ascii(substr(pw,1,1)) > 85 #ascii 함수와 substr 함수를 통해 Blind SQL.. GOBLIN - 3 문제 접속 시id 값은 guest로 고정돼 있고,no 파라미터 값만 사용자가 get 요청을 보낼 수 있는 구조를 볼 수 있었다.no 값에 1을 넣어보니Hello guest 라는 문구를 통해 guest 계정으로 인증된 것을 알 수 있었다.아마 no 값은 계정 마다 있는 넘버링? 정보인 것 같고 현재 로직에서는 비밀번호를 대체하는 것 같다. 아마..??no=0 or id='admin'select * from member where id='guest' and no=0 or id='admin'and 연산 우선!(id='guest' and no=0) = False(False or id='admin') -> admin 계정으로 우회 성공일단 no 값에 guest 의 값인 1이 아닌 값을 넣어 and 연산에서 Fal.. COBOLT - 2 문제 접속 시식별/인증 동시의 로그인 로직 케이스를 볼 수 있으며GREMLIN 문제와 다른 점은 비밀번호가 md5 알고리즘으로 해시와 돼 있다는 점이다.?id=admin'%23하지만 식별/인증 동시 로직이기 때문에GREMLIN 문제와 동일하게 주석 쿼리로 인증우회가 될 것이라고 생각하여 시도했다.COBOLT Clear! 라는 문구를 통해 인증우회에 성공한 것을 확인할 수 있다. GREMLIN - 1 문제 접속 시해당 서비스에서 사용하는 로그인 쿼리가 식별/인증 동시 로직인 것을 확인할 수 있었다.?id=admin'#&pw=1234get 요청을 통해admin 계정을 주석 쿼리로 인증우회 시도해 봤다.하지만 #(해시)가 url 인코딩 되지 않아인증우회에 실패했다.?id=admin' or '1' = '1 &pw=1234그래서 이번엔 or 쿼리를 이용하여 인증우회를 시도했다.GREMLIN Clear! 라는 문구와 함께 인증우회가 성공한 것을 확인할 수 있다.더보기나중에 알아보니#(해시)의 경우 url 인코딩 시 %23으로 표현된다는 것을 알게 됐다.?id=admin'%23 그래서 url 인코딩된 주석 쿼리를 인젝션 해보니GREMLIN Clear! 라는 문구와 함께 인증우회가 성공한 것을 확인할 수 있다. 이전 1 다음