[Week5/CTF] Secret Login

2024. 5. 22. 17:48·NS/CTF

이번 문제는 관리자 계정으로 로그인을 하는 것인데 관리자 아이디를 모른다. 

일단 주어진 아이디로 http history를 확인해 봤다.

이전 문제들과 요청하는 게 다른 게 없다.

POST로 요청하고 GET 메서드로 index.php를 응답받는다.

마찬가지로 doldol 아이디로 로그인 됐다.

보통 admin 계정은 처음 로그인 로직을 구현하고 DB를 연동시킬 때 가장 처음에 추가하게 된다. 따라서 다른 row의 아이디로 로그인을 시도할 수 있는지 확인해 봤다. 먼저 로그인 로직이 식별/인증 동시라고 가정하고 doldol 또는 Ture(1=1) -> 테이블의 모든 값을 가져오게 했다. 

select * from member where UserId='doldol' or 1=1 # ' and Password='아무거나 입력'

실제 서버는 위 쿼리가 작동한다고 예측했다.

login_acc가 나왔다. 즉, login_acc라는 아이디로 로그인이 됐고, 이를 통해 아이디 테이블 전체를 가져올 수 있는 것을 알 수 있다. 그럼 해당 sql injection 방법이 작동했으니까 가장 첫 번째 아이디로 로그인하려면 어떡해야 할까? sql에서는 limit이라는 함수가 있다.

SELECT * FROM user WHERE age>20 limit 0,1;

해당 쿼리를 해석해 보면 user라는 테이블에서 age가 20보다 큰 모든 데이터 중 0번째 행부터 1개를 출력한다라고 해석할 수 있다. 즉, limit 함수를 사용하면 사용자가 원하는 row의 데이터를 가져올 수 있다. 이를 응용해 보면?

전체 테이블 중 첫 번째 행을 가져오기 위해 위처럼 작성하면

select * from member where UserId='doldol' or 1=1 limit 1,1 # ' and Password='아무거나 입력'

이렇게 서버에서 쿼리가 실행될 것이고, 해석해 보면 userId가 'doldol' 또는 전체 테이블(1=1) 중에서 전체 테이블을 가져오게 되고 첫 번째 행(limit 1,1)으로 로그인 시도를 한다라고 해석할 수 있다. 이때도 식별/인증 동시이며 개행문이 아니기 때문에 작동하는 것을 알 수 있다. 원래라면 식별/인증 분리인지 동시인지 테스트해보고, 개행문인지까지도 확인해야 하지만 첫 시도만에 됐으니 다행이다.

두둥탁! 관리자 계정으로 로그인이 성공했다.

만약, 두 번째 row로 로그인하고 싶다면? 아이디를 위와 같이 작성하면

select * from member where UserId='doldol' or 1=1 limit 2,1 # ' and Password='아무거나 입력'

해당 쿼리가 실행될 것이고, limit 2,1이 2번째 행부터 1개의 데이터로 제한시키기 때문에 두 번째 행의 아이디로 로그인할 수 있다.

두 번째 row의 아이디는 bello라는 것을 알 수 있다.


summary

이번에는 limit 함수를 사용해서 원하는 행을 불러올 수 있는 방법을 진행했고, 테이블의 전체 데이터를 불러와 확인할 수 있는지 확인했다. 추가로 limit 2,5를 하든 limit 2,1을 하든 데이터를 여러 개 가지고 오더라도 화면에 출력되는 것은 User Name 하나기 때문에 맨 위의 데이터 즉, 가장 처음 데이터가 선택되는 것도 알아두면 좋을 것 같다.

'NS > CTF' 카테고리의 다른 글

[Week6/CTF] - SQL Injection 1  (0) 2024.06.18
[Week5/CTF] PIN CODE Bypass  (2) 2024.05.22
[Week5/CTF] Get Admin  (2) 2024.05.22
[Week5/CTF] Login Bypass 1,2  (1) 2024.05.22
[Week4] Burp Suite - CTF(간단 퀴즈)  (0) 2024.05.13
'NS/CTF' 카테고리의 다른 글
  • [Week6/CTF] - SQL Injection 1
  • [Week5/CTF] PIN CODE Bypass
  • [Week5/CTF] Get Admin
  • [Week5/CTF] Login Bypass 1,2
min8282
min8282
  • min8282
    min8282
    min8282
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Security (33)
        • System & Network (2)
        • Application (5)
        • Cloud (20)
      • Dev (18)
        • Node.js (12)
        • Hadoop (3)
        • BOJ (2)
      • Web3 & Blockchain (2)
        • Web3 (2)
      • K-Shield.Jr (15)
      • Web Security Academy (3)
      • Wargame (13)
        • Dreamhack (3)
        • Bandit (10)
      • NS (16)
        • CTF (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    web3 보안
    정처기 필기
    aws lambda
    web3
    metacode
    splunk db connect
    systems manager
    Session Manager
    정보처리기사
    오블완
    AWS SSM
    AWS CLI
    prepared statement
    web security academy
    탈중앙화
    File Upload
    메타코드
    Path Traversal
    metacodem
    ESC1
    티스토리챌린지
    정처기
    정처기필기
    amazon s3 트리거
    aws 트리거
    보안 그룹
    스마트컨트랙트
    스마트 컨트랙트
    메타코드M
    ELB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
min8282
[Week5/CTF] Secret Login
상단으로

티스토리툴바