━━━━ ◇ ━━━━
해킹/SuNiNaTaS 모의해킹

22. 써니나타스 (Suninatas) 22번 문제풀이 Write-up

728x90
반응형

써니나타스 모의해킹 사이트

https://suninatas.com/challenges

 

써니나타스

웹해킹, 포렌식, 리버싱, 암호학, 해킹 워게임 제공.

www.suninatas.com


문제를 보니 SQL Injection 같은데 일단 개발자도구를 확인했다. 

 

개발자도구에서 발견한 힌트다. 힌트에서는 ID와 PW로 guest를 줬고 admin의 비밀번호를 알아내는 것이 이번 문제의 목표다. 

 

힌트에서 받은대로 ID: guest, PW: guest를 입력하니 OK guest라는 메시지가 출력된다. 

 

 

 

먼저 가장 기본적인 injection 구문을 넣어봤는데 No hack 이라는 메시지가 나왔다. 그럼 or은 막혔고, and로 시도해보니 False라는 메시지가 떴다. 그 후에 #등은 모두 필터링되어 있어서 좀 더 살을 붙여서 다른 injection 구문으로 시도해봤더니 pw를 1234로 줘도 OK guest가 출력됐다. 

 

admin도 동일하게 진행해봤는데 admin 또한 패스워드가 틀려도 참인 쿼리가 성공했다.

 

 

Blind Injection 구문으로 비밀번호 길이 확인하기
admin' and len(pw)=1--
~
admin' and len(pw)=10--

블라인드 인젝션 구문을 작성해서 하나씩 넣어보는 방법을 선택했다. 

일단 나는 Burp Suit을 실행해서 Repeater로 진행했다. 

1부터 10까지 진행해본 결과, 비밀번호길이가 열 자리가 됐을 때 OK admin이 출력됐다.

지금까지 알아낸 것은 비밀번호 길이가 10자리라는 것과 각 자리의 문자를 확인하려면 substring 함수를 사용해서 첫번째자리부터 대입해보면서 계속 비교하는 방법이 있다는 것이다. 

하지만 비밀번호가 한 두 자리도 아니고 substring으로 한다는 건 무리가 있었다. 

그래서 나는 Burp Suit로 Brute Force 공격을 실행시켜두고 파이썬으로 코드를 짜봤다. 

 

 

이 문제에서 substring함수의 기본적인 틀은

admin' and substring(pw,1,1)='a'--이다. 

즉 admin' and substring(pw,1,1)='a'--

admin' and substring(pw,2,1)='a'-- 

admin' and substring(pw,3,1)='a'-- 

이런식으로 자릿수를 1씩 키워가면서 문자열을 일일이 대입해야한다. 이 작업을 대신해 줄 수 있는 파이썬 코드를 작성했는데 위 캡처에서 빨간 밑줄이 바로 그 부분이다. 

 

그렇게 얻어낸 결과 값은 비밀번호: N1c3Bilnl)

특수문자도 들어가고 대문자도 들어가는 상황이었는데 brute forcing을 켜뒀다한들 어마어마하게 오래걸릴것이다. 

 

 

써니나타스 AUTH게시판에 인증을 하니 축하메시지와 클리어했다는 메시지가 출력됐다. 

SQL Injection 문제여서 그랬던건지 시간이 꽤 오래 걸렸다. 확실히 레벨이 높아질 수록 문제도 조금씩 까다로워지고 시간도 많이 소요된다. 그래도 공부되고 좋다. 문제는 다음 문제도 SQL Injection이라는거,

 

 

문제 22번

 

성공

728x90
반응형
COMMENT