분류 전체보기 105

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’을 통해 모든 디렉토리를 볼 수 있다. 여기 ..