웹 문제는 22번부터 다시 웹 문제이다.

 

1. 문제

 

sql 문제가 나왔다. 다른 문제들에서 많이 시도해보았는데 안되었는데 드디어 나온 것 같다!!


2. 풀이 방법

 

힌트를 보기 위해 응답 패킷을 잡아보았다.

 

힌트엔 guest가 있었고 admin의 pw를 찾으라는 것 같았다.

SQL injection을 통하여 admin계정의 패스워드를 얻을 수 있다고 생각이 들었다.

 

우선 ID / PW에 guest값을 입력하였다.

 

 

Blind Sql injection이라는 구문이 OK GUEST라는 구문으로  변경되는 것을 확인할 수 있었다.

 

이후 추가 ', " , and 1=1 등을 이용하여 저 guest 값이 변경되는지 확인하였다.

 

패스워드가 틀려도 참인 쿼리를 이용하여 성공하는 것을 볼 수  있었다.

 

이를 이용하여 admin 계정도 시도해 보았다.

 

참인 쿼리를 입력하게 되면 패스워드를 몰라도 admin 로그인이 성공하는 모습이 보인다.

 

거짓인 쿼리를 이용했을 시 로그인되지 않는 것을 볼 수 있다.

 

이 부분을 보고 참, 거짓 쿼리를 통하여 패스워드 길이를 구하고 한 글자 씩 추측해보아야겠다고 생각했다.

 

현재 필터링되어있는 키워드를 제외하고 사용할 수 있는 쿼리를 통해 패스워드 길이를 추측해 보았다.

 

or는 사용할 수 없으므로 and를 이용하여 len(pw) = 1부터 10까지 직접 입력해보았다.

패스워드 길이가 맞을 시 OK가 검색이 될 것으로 생각하고 숫자를 늘려갔다.

 

숫자를 늘려가니 10이 되었을 시 OK 버튼이 출력이 되었다.

 

10자리 수 인걸 알 수 있었다.

 

이제는 패스워드가 무엇인지 substring(pw, 0,1)을 통하여 0번째 자릿수부터 10번째 자릿수까지 알아볼 것이다.

이는 보통 ascII 코드를 이용하여 풀어주는 것이 가장 쉽게 알아볼 수 있으므로 ascII코드를 이용하도록 할 것이다.

 

이것은 숫자를 점차 늘려가며 문자를 비교해야 하기에 파이썬을 통하여 알아보도록 하겠다.

 

ID와 길이를 알고 있으니 미리 값을 정해 파이썬 코드를 제작해보았다.

 

이를 통해 N1 c3 Bilnl이라는 패스워드가 나오게 되었고. 이를 입력하게 되면 

 

로그인이 성공하는 것을 볼 수 있다.

 

이후 Auth 탭을 통해 얻은 패스워드를 입력할 시...

 

나를 반겨준다~

 

이번 문제를 푸는 데는 파이썬 제작 및 자료조사 때문에 시간이 많이 걸린 것 같다...

SQL Injection은 역시 오래 걸리며 쉽지 않은 것만 같다....

 

다음 마지막 문제도 SQL injection인 것 같아서.. 시간 여유로우면 진행하고 아니면 다른 wargame사이트를 찾아봐야겠다....

 

 

참고 : https://jaeseokim.dev/Python/Python-requests%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-blind-injecthion-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%9C%EC%9E%91-2%ED%8E%B8/

 

Python requests를 이용한 blind injecthion 스크립트 제작 (2편)

시작 하기에 앞서 이전 포스트 1편 을 보고 와주시면 감사하겠습니다. 이전 포스트에서 알아낸 ID을 가지고 password의 길이에 대해 알아내는 스크립트를 작성해봅니다/ 위와 같이 간단하게 스크립

jaeseokim.dev

 

*제 개인적인 문제풀이 방식이었으며, 잘못된 점이 있다면 알려주시면 감사하겠습니다.

'워게임 > suninatas' 카테고리의 다른 글

suninatas/웹/8번 문제풀이  (0) 2021.06.27
suninatas/웹/7번 문제풀이  (0) 2021.06.23
suninatas/웹/6번 문제풀이  (0) 2021.06.14
suninatas/웹/5번 문제풀이  (0) 2021.06.09
suninatas/웹/4번 문제풀이  (0) 2021.05.30
복사했습니다!