> 사이트 번역 더보기 해당 문제 페이지를 보면 앞에서 풀었던 문제들과는 다르게 정답 입력을 위한 Épreuve 공간이 별도로 존재하지 않는다. 바로 문제 페이지의 소스코드를 확인해보았다. 소스코드가 매우 많지만 확인해보았다. 문제 내용을 보면 자바스크립트에 대한 말을 하고 있으므로 부분들을 확인해보았다. 쭉 내리던 중 form 태그 중 password 항목의 코드 부분을 발견했다. password의 값이 hacked로 저장되어 있다. Validation 공간에 hacked 값을 넣어보았다. 문제가 풀렸다.
> 사이트 번역 더보기 해당 문제의 소스코드를 보면 gre 값을 %72%69%6D%62%61%75%64 값과 비교하는 것을 볼 수 있다. %72%69%6D%62%61%75%64 는 ASCII 값으로 추측된다. rimbaud 라는 문자열이 나온다. Épreuve 공간에 rimbaud 값을 넣어보았다. 그럼 암호가 맞다는 창이 뜬다. 정답 입력 공간에 다시 rimbaud 를 입력했다. 문제가 풀렸다.
사이트 번역 더보기 문제 화면 속에는 Accèder au niveau 링크가 보인다. 링크를 클릭하면 다른 페이지로 이동하여 패스워드 입력하는 창이 뜬다. 값을 잘못 입력하면 잘못된 비밀번호라는 알림창이 뜬다. 창을 닫고 해당 페이지의 소스코드를 확인해보았다. 입력한 패스워드 값이 hihi일 경우 올바른 패스워드라고 출력하는 것으로 보인다. 다시 패스워드 입력 창을 띄워서 hihi를 입력해보았다. 글자가 중간에 하나 깨진건지 모르겠지만 앞에서 본 문구가 출력되었다. Password accept챕, tu peux le valider 그런데 정답 입력공간에는 무엇을 넣으라는 말인지 모르겠다. 생각하다가 hihi를 입력했다. 문제가 풀렸다.
사이트 번역 더보기 문제의 내용은 아래 Épreuve 의 값을 알아내서 Validation 공간에 입력하는 것으로 보인다. 그러나 보통 이런 공간을 보면 입력해서 암호처리된 원을 평문으로 볼 수 있는 모양이 뜨지만 평문이 보이지 않는다. F12(개발자 도구)를 사용해서 확인해보았더니 값이 보였다. tresfacile 라는 값을 알아내었다. Validation 공간에 입력해보았다. 문제가 풀렸다.
이번에는 앞에서 푼 Blind SQL Injection과는 다르게 더 어렵다고 한다. admin 이라는 문자열도 제한이 되어있다. pw의 길이를 찾는 데 필요한 len은 필터링이 되어있지 않아서 바로 pw의 길이를 확인해보았다. 우선 id에 입력해야 하는 admin을 우회하기 위해 문자열을 잘라서 확인해보았더니 우회가 되었다. id에 입력해야 하는 admin은 a'+'dmin'으로 우회했다. admin을 우회하는 방법을 찾았으니 pw의 길이를 찾기 위해 아래 명령어들을 사용했다. a'+'dmin' and len(pw)
문제 페이지를 보면 로그인 화면과 함께 Blind SQL Injection 문제라고 적혀있고, 필터링 키워드들이 적혀있다. Blind SQL Injection은 오류가 출력되지 않을 때 사용하는 공격 기법으로, 한 문자씩 알아내며 DB 정보를 알아내는 SQL Injection의 한 종류이다. 소스코드를 확인해보면, 게스트 계정 정보가 나와있고, 나는 admin pw를 알아내는것이 목표라고 적혀있다. 우선 guest 계정으로 로그인을 해보았다. OK guest 라고 문자열이 출력되는 것 외에는 다른점이 보이지 않는다. id에는 guest를 입력하고, 뒤에 주석을 달았다. pw는 1234를 넣어보았다. guest의 pw는 guest임에도 불구하고 1234로도 로그인에 성공했다. 이번에는 id는 admin으로..
문제 페이지를 들어가면 로그인하는 화면이 나타난다. 소스코드를 확인해보면 힌트로 admin의 패스워드는 0-9999라고 한다. 패스워드의 범위가 지정되어있다면 Brute Force 공격이 편하지 않을까 하고 Burp Suite를 사용하여 Brute Force 를 시도했다. 위의 패킷을 Intruder로 전송하여 Payload를 설정 후 공격을 실행했다. Positions 탭에서 패스워드 부분을 변수로 지정후 Payload를 설정했다. 너무 오래걸려서 범위를 찾아두고 지정했다. 패스워드 값이 7707일 때 응답 시간에 차이가 있었다. admin/7707로 로그인을 했더니 축하한다는 메세지 창과 인증키가 출력되었다. l3ruteforce P@ssword l3ruteforce P@ssword 라는 인증키를 얻..
문제를 들어가서 Download 버튼을 누르면 아래와 같은 evidence.tar 압축파일이 다운받아진다. 다운받은 파일의 내용은 아래와 같다. 눈여겨볼만한 부분은 아래와 같다. ===shadow 파일 root:$6$E2loH6yC$0lcZ0hG/b.YqlsPhawt5NtX2jJkSFBK6eaF/wa46d8/3KPs6d45jNHgNoJOl7X1RsOrYsZ.J/BBexJ93ECVfW.:15426:0:99999:7::: suninatas:$6$QlRlqGhj$BZoS9PuMMRHZZXz1Gde99W01u3kD9nP/zYtl8O2dsshdnwsJT/1lZXsLar8asQZpqTAioiey4rKVpsLm/bqrX/:15427:0:99999:7::: ===passwd root:x:0:0:root:/root:/b..
소스코드 확인 후 눈에 띄는 코드와 힌트가 아래와 같이 적혀있다. 문제 페이지를 내리다보면 버튼이 있고, 버튼 클릭 시 아래와 같은 창이 뜬다. 위에서의 소스코드를 해석해보았다. keyCode 116, 9, 78, 82 가 어떤 키인지 찾아보았다. 116 : F5 9 : Tab 78 : n 82 : r F5나 Tab을 누르면 ‘No!’라는 팝업창이 뜨고 false를 반환한다. 또한 Ctrl을 누르며 n이나 r을 울러도 ‘No!’라는 팝업창이 뜨며 false를 반환한다. 버튼은 무슨 역할을 하는지 보기 위해 다시 소스코드를 봤더니 web07_1.asp로 이동시키는 것을 볼 수 있었다. 아래의 코드는 form의 전송 방식은 post 이동 혹은 데이터를 보내는 페이지인 web07_1.asp form의 이름은 ..