<목표: 관리자 계정으로 로그인을 해라! 하지만... 관리자 계정이 뭔지는 모른다!>
주어진 로그인 정보 : ID: doldol / PW : dol1234
1.일단 사이트로 들어와서 doldol 아이디로 로그인을 해준후 패킷을 살펴보자!
살펴보니깐 POST 로 로그인 정보를 (로그인_PROCESS.PHP) 같은 페이지로 넘겨준후
인증절차 후 INDEX.PHP 로 넘어가는것 같다..
인증 우회를 위해 SQL 쿠키변조는 불가능 해보이니 SQL 인젝션이 가능한지 확인해 보겠습니다.
<첫번째 시도> - OK
doldol' and '1'='1
//비밀번호 : dol1234
=> 가능한 것을 보니 일단 SQL 인젝션 공격이 먹히는 듯 하다.
<두번째 시도> - OK
doldol' or '1'='1
//비밀번호 : 1234
=> 이것을 통해 1. 식별/인증 동시 방식이다. 2. ID 값만 알면 admin 계정으로 알수 있을것이다!
를 생각해볼수 있다.
<세번째 시도> - OK
doldol' #
비번: 1234
=> 일단 뒤에부분에 주석처리해도 문제없으니 주석사용이 가능하다!
즉! 우리가 원하는 코드를 뒤에 더 넣어 줄수 있을것 같다.
<네번째 시도> - OK
' or '1'='1' limit 0,1 #
//비밀번호 : 임의값
=> ' or '1'='1' 을 통하여 테이블의 전체데이터를 가져와 준후 limt 0,1 을 통하여 가장 위에부분의 첫번째 행만 가져오게 한후 로그인을 하니 login_acc 라는 이름으로 로그인이 되었다.
분명 다른데이터를 가져온게 확실하다!
limit 1,1 로 코드를 바꾸어 더 살펴보도록 하자!
<다섯번째 시도> - OK
' or '1'='1' limit 1,1
//비밀번호 : 임의값
=> 두번째 데이터에 우리가 원하는 어드민 계정이 저장되어 있었다.
이렇게 flag 를 얻을수 있었다!!
리뷰: 이번문제를 통해 SQL 구문의 limit 을 알아볼 수 있었다.
저번 문제에서도 느낀거지만 웹해킹에서 sql 의 공부는 필수인것 같다.
다른 곳에도 잘 응용할 수 있게 SQL 구문을 심도있게 공부해둘 필요가 있을것 같다!
'워게임 문제풀이 > Segfault' 카테고리의 다른 글
<Segfault> 워게임 문제풀이 [7편]-Blind SQL Injection (0) | 2024.05.31 |
---|---|
<Segfault> 워게임 문제풀이[6편] - SQL Injection3 (1) | 2024.05.31 |
<Segfault> 워게임 문제풀이 [4편] - Login Bypass 3 (0) | 2024.05.21 |
<SegFault> 워게임 문제풀이 [3편] - Admin is Mine (0) | 2024.05.21 |
<Segfault> 워게임 문제풀이 [2편] - PIN CODE Bypass (0) | 2024.05.20 |