Bookstore.java - DCTF 22

5748 단어 ctfs
저는 볼로냐 대학의 팀DCTF 2022과 함께 Ulisse에 참여했습니다.

Bookstore.java 챌린지는 다음과 같이 명시했습니다.

Web developer left the company becouse he was not being paid. He left some hidden features for him, to bypass security. Can you find the vunerability? http://book-store.dragonsec.si



그리고 우리에게 book_store.jar 파일을 주었습니다.

로그포북



디컴파일러(예: JD-GUI )로 jar 파일을 열면 로그 분석기에 취약점이 있음을 알 수 있습니다.

Pattern pattern2 = Pattern.compile("get\\{.*\\}salt=" + System.getenv("SALT"));
Matcher matcher2 = pattern2.matcher(mssg);
String substring2 = null;
if (matcher2.find()) {
   substring2 = matcher2.group();
}
if (substring2 != null) {
    downloadFile(substring2.substring(substring2.indexOf(123) + 1, substring2.indexOf(125)));
}


로그 문자열에 템플릿get{...}salt=과 env varSALT가 포함된 경우 프로그램은 헤더{...}와 env varNot-Found:를 값으로 사용하여 NOT_FOUND 사이의 URL에 HTTP 요청을 보내려고 시도합니다.

URL link = new URL(url);
link.toURI();
HttpURLConnection conn = (HttpURLConnection) link.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("not-found", System.getenv("NOT_FOUND"));


소금 찾기



힌트가 제공됩니다.

Method how the salt is generated is given through variable names in one java class. The salt is 8 chars long.



클래스Art를 보면 두 가지 이상한 변수 이름이 있음을 알 수 있습니다.

> String frequency = fontType.getValue();
int analysis_should_be_fun = findImageWidth(textHeight, artText, frequency);


생성: 빈도 분석은 재미있어야 합니다.

주파수 분석



결과가 없는 셰익스피어 연극의 빈도 분석에 대한 몇 가지 연구를 찾은 후 소금이 8자이며 웹사이트와 파일 book.json 에 제시된 페이지에 정확히 8개의 단락이 있다는 힌트를 기억합니다.

각 단락에서 가장 많이 반복되는 문자를 연결하면 소금을 얻은 다음 프로그램이 플래그로 URL을 ping하도록 할 수 있습니다.

Salt: oeeeeooo

Flag: dctf{L0g_4_hid3n_d@7@\_n0t\_s0\_h@rd_righ7}

좋은 웹페이지 즐겨찾기