Dreamhack simple_sqli_chatgpt 풀이

심야·2023년 12월 19일
0

해당 문제는 chatgpt를 이용해 SQL 인젝션 공격을 시도하는 것이나, 본 글에서는 직접 풀이하겠다.
문제에서 제공하는 소스 코드를 보니 2개의 계정을 생성한다.

  1. ID : guest, PW : guest, userlevel : 0
  2. ID : admin, PW : 난수, userlevel : 0

image.png

위 코드만 봤을 때는 PW가 Flag가 아닐까 싶지만 그렇지 않다. 다음 코드를 보자.

image.png

해당 코드를 브라우저에서 출력하는 화면은 아래와 같다.

image.png

userlevel을 입력하고 로그인을 시도하면 레벨과 일치하는 계정으로 로그인 되는 것 같다.

0 을 입력하고 로그인을 시도하겠다. 로그인 결과, 게스트 계정으로 로그인 된다. 분명 계정을 생성할 때 관리자 계정도 레벨 0 권한을 부여했으나 게스트 계정으로 로그인 된다.

image.png

코드를 다시 보면 users 테이블에서 userlevel과 일치하는 행의 모든 컬럼을 반환한다. 또한 0번째 인덱스는 userid, 2번째 인덱스는 userlevel이다. 그리고 userid가 admin 문자열과 일치할 경우 flag 값을 출력한다.

image.png

일치하는 행의 모든 컬럼을 반환하고 모든 계정의 userlevel 값이 0 이다. 따라서 and 연산자를 사용하여 userid 컬럼 값이 admin 인 쿼리로 공격을 시도하면 간단하게 문제가 해결된다.

  • 공격 Query : 0'and userid='admin

공격 결과

image.png

image.png

profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글