인디안 보호구역
문제 풀이 이번에는~ 100점짜리 문제. 스크립트 링크 외에 아무런 단서가 없기에 클릭하였다! GET method를 이용하여 변수 id에 admin 값을 집어넣어야 한다. 그러나 eregi() 함수가 “admin” 문자열을 필터링하고있기 때문에 값은 admin이지만 형태는 다른 문자열을 넣어야할 것이라고 생각했다. 의미는 같은데 형태가 다른 것.. 인코딩을 해야겠다고 생각했다. admin 입력 놉! 단호한 자식.. 2) ASCII hex로 표현 URL Encoding 0x610x640x6d0x690x6e \0x61\0x64\0x6d\0x69\0x6e \x61\x64\x6d\x69\x6e %61%64%6d%69%6e NULL은 브라우저에서 디코딩해주지 못했다. 4) Force Full + NUL Injec..
문제 풀이 base64 인코딩과 관련된 문제인가보다 하며 스크립트를 클릭! 이번에도 문제 페이지의 HTML 코드는 아무 영양가가 없었기에 바로 index.phps를 확인해보았다. 전체적인 순서는 아래와 같다. ‘인코딩 20번 -> 문자열 치환 -> 쿠키 생성 -> 문자열 치환 -> 디코딩 20번’ 그런데 처음 시작하는 if문을 살펴보면, user라는 쿠키가 없을 경우 ‘인코딩 20번 -> 문자열 치환 -> 쿠키 생성 /// 문자열 치환 -> 디코딩 20번’ 위와 같이 인코딩부터 쿠키생성까지의 과정이 생략되게 된다. 결국 페이지는 ‘문자열 치환 -> 디코딩 20번’의 과정만 실행되게 되는데 이를 통한 결과 값이 ‘admin’이 되어야 함을 알 수 있다. Base64에서 출력값 문자의 특징은 ‘a-z, A-..
문제 풀이 특정 문자열이 있는데 마지막 패딩(==)문자를 보고 base64의 출력값임을 알 수 있었다. 코드 확인 결과 딱히 단서가 있진 않아 생략한다. 별 다른 점이 발견되지 않아 바로 base64 디코딩을 시작하였다. base64란? 인코딩 기술로서 패딩 연산을 통해 ‘총 비트수%3’의 값에 따라 문자열 끝에 ‘=’문자를 남기는 것이 특징이다. 출력값으로 64개의 문자를 사용한다 (a-z, A-Z, 0-9, +, /) SHA1이란? 암호화 기술로서 해시 함수의 일종이다. 출력값은 160bit이며, 16진수 문자 40개로 이루어져있다.(0-f) c4033bff94b567a190e33faa551f411caef444f2 해당 문제의 문자열을 base 64로 디코딩했더니 위와 같은 문자열을 얻었다. 처음엔 ..
HTTPS(SNI) 차단 논란 종합 SNI 차단이란? HTTPS 통신을 하더라도 (암호화가 개시되기 이전의) 핸드셰이킹 과정에서는 에 호스트 이름, 즉 ‘목적지 URL’이 표시될 수 있음. ISP 업체는 이 정보를 이용해 사이트를 차단한다. 문제점 : ESNI(Encrypted SNI)를 이용하면 우회가 가능함. 논란이 되는 사항들 1. 감청일까? 감청 : 통신의 내용을 들여다 보는 것. ex. 편지를 뜯어서 내용을 보면 감청, 하지만 봉투 겉면에 쓰인 주소를 보는것은 감청이 아니다. SNI 차단은 내용을 보지 않으므로 감청이 아니다. 2. 사찰일까? 원론적으로는 맞다. 편지의 주소를 보는 것도 사찰이기 때문. 하지만 실질적인 사찰은 봉투에 쓰인 발신자 주소가 누구인지 개별적으로 식별하고 또 그것을 저장..
문제 풀이 문제를 클릭하니 알림창과 함께 문제 선택 페이지로 돌아가게 된다. 소스코드를 보고 싶은데 알림창이 뜬 화면에서는 띄울 수가 없었다. 버프스위트를 이용하여 소스를 확인하면 된다고 생각했다. 엥 소스 안에 플래그가 떡하니 있었다. 너무 쉽게 문제를 푼 것이 아닌가 하는 생각이 들었다. 문제라는 것이 그렇듯 출제자의 의도도 중요하니까, 띵킹 해보기로했다. 우선, url을 보니 js를 사용중이고, 알림창과 이전 페이지로 이동하는 기능 역시 전부 js일 것이니, js 기능을 끄면 되겠다는 생각이 들었다. Chrome에서는 좌측 상단의 버튼을 누르고 사이트 설정을 들어가 아래와 같이 설정할 수 있다. 허용을 차단으로 바꾼다. 2. 배운 점 비밀번호는 html 스크립트에 평문으로 적으면 안된다. 3. 참고..