분류 전체보기 108

Calc.exe Online(webhacking)

[CTF 사이트 닫힘] calc.exe Online은 위 사진처럼 계산기 기능을 보여준다. 두 개의 함수가 존재했다. 첫 번째 함수인 safe_eval()은 입력을 받은 값을 is_safe()로 검사를 한 다음, 이것이 통과하면 eval()함수로 보내 실행한다. 1) strtolower() : 문자열의 대문자를 소문자로 바꿔주는 함수 2) str_replace() : 문자열을 변경해주는 함수 더보기 -구조 : str_replace(‘변경대상 문자’, ‘변경하려는 문자’, ’변수(replace가 바꾸고자 하는 문자열, 변수 수)’) 3) eval() : string 문자열을 자바스크립트 코드로 실행하는 함수 safe_eval()에서 검사를 진행하는 is_safe()함수이다. 이 함수는 입력이 good에 있..

SSRFrog (Webhacking)

[CTF 사이트 닫힘] 문제를 보면 링크가 제공된다. 링크로 들어가면 위와 같이 페이지가 나오고, 소스를 확인해준다. 1) FLAG is on this server: http://the.c0o0o0l-fl444g.server.internal:80을 통해 FLAG가 어디에 위치하는지 확인하였다. 2) 위와 같은 소스 코드를 제공받았다. 3) const { url } = req.query; : req.query(쿼리 문자열 매개 변수에 대한 속성이 포함 된 개체다.)을 통해 “url” 쿼리 문자열 매개 변수를 찾고 있음 4) if (url.length !== new Set(url).size) return res.sendFile(__dirname + "/frog.png"); : : 문자열이어야 하고 중복 문자..

ヽ (#`Д´) ノ(web)

[CTF 사이트 닫힘] 페이지를 열면 간단한 php 페이지의 정보를 볼 수 있다. 3가지 조건이 나와있다. 1) 입력하는 값의 길이는 10보다 작아야 한다. 2) 입력하는 값에 a~z, 0~9의 값이 없어야 한다. 3) eval()을 실행하기 전에 print_r를 통해 print해줘야 한다. 1), 2) 번 조건을 우회하기 위해 문자열을 배열로 만들어준다. 그러면 print 대신 print_r로 출력이 돼서 배열은 eval()함수에서 검사를 할 수 있게 된다. 여기서 print_r()은 배열을 편하게 읽을 수 있게 정보를 출력해주는 함수이고, 디버깅 할 때 편리하다. 이렇게 배열을 통해 우회를 해주면 ‘system()’을 사용할 수 있게 된다. 그러면 ‘ls’을 통해 모든 디렉토리를 볼 수 있다. 여기 ..

Harmony Chat(Webhacking)

화면에 나와있는 내용과 같이 /register vie로 접속하였더니 UID가 나왔다. 로그인하기 위해서 /login (UID)를 해주었더니 로그인이 되었다. vie라는 채널을 만들고 Hello와 Hi를 입력하니까 채팅창에 나타났다. 위에 나와있는 Logs(HTTP) 버튼을 누르니까 내가 쳤던 채팅의 로그가 기록된 페이지가 떴다. 이 다음에 npm라이브러리를 사용해서 코드를 확인하고 수정해야 한다. csp-report를 자세히 살펴 보니 애플리케이션의 npm라이브러리 javascript-serializer를 사용해서 보안에 취약한 역직렬화가 가능하다는 것을 알 수 있다고 한다. 이 직렬화 구문을 분석함을 통해 RCE를 달성할 수 있는 방법을 찾을 수 있었다. 여기서 RCE는 조작된 웹페이지나 이미지 파일을..