본문 바로가기

분류 전체보기182

[Synology NAS] SSH 접속 활성화하기 SSH를 이용하여 시놀로지에 접근할 수 있는데, 기본적으로는 SSH접속이 비활성화되어 있습니다. SSH 접속을 사용하려면 해당 기능을 활성화하면 됩니다. 제어판으로 들어갑니다. 터미널 및 SNMP를 클릭합니다. SSH 서비스 활성화에 체크하고, 포트를 변경합니다. SSH 기본 포트는 22인데, 외부 접속을 설정한 경우 해당 포트로 공격 시도가 들어올 수 있기 때문에 반드시 다른 포트로 변경해야 합니다. 외부에서 접속하려면 공유기 포트포워딩 설정을 해야 합니다. 적용을 누르면 SSH 설정이 완료됩니다. PuTTY를 이용하여 SSH 접속을 해보겠습니다. Host Name과 설정한 Port를 입력합니다. NAS에서 사용하는 계정 ID를 입력합니다. 패스워드를 입력합니다. 패스워드 입력 모습은 화면에 보이지 않.. 2022. 10. 26.
[PHP] str_replace() 문자열 치환 함수 사용법과 우회 방법 str_replace() 함수는 특정 문자열을 치환하는 함수입니다. 사용 방법은 str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 입니다. 해당 예제는 "안녕하세요"를 "안녕안하세요"로 바꾸는 코드입니다. str_replace() 인수를 보면 "하세요" -> "안하세요" 이렇게 치환됩니다. 해당 코드의 실행 결과입니다. 치환이 된 것을 볼 수 있습니다. CTF 문제에서 str_replace()로 문자열 필터링을 거는 경우가 있습니다. str_replace() 인자에 따라 우회가 가능합니다. str_replace("admin", "", $str) 이렇게 필터링을 걸어놓았다고 해보겠습니다. admin -> 공백으로 치환됩니다. 결과 페이지에는 [그림 2]처럼 아무것도 뜨지 않.. 2022. 10. 25.
[Synology NAS] Docker로 APM 서버 설치 Docker를 활용해 NAS에 APM을 설치해 보겠습니다. APM은 Apache + PHP + Mysql입니다. Web 서버를 구축할 때 많이 이용하는데, 특히 제로보드나 그누보드, WordPress 등의 홈페이지를 구축할 때 많이 이용합니다. 참고로 Docker는 Plus(+) 모델에서만 사용 가능합니다. (Intel CPU라서 그런 것 같습니다) 레지스트리에 PHP를 검색합니다. (APM을 검색하면 다른 APM이 나옵니다) silintl/php7을 고르겠습니다. 가장 최신 버전을 선택합니다. 이미지 탭에 들어가면 다운로드 된 레지스트리를 확인할 수 있습니다. 더블클릭하면 컨테이너를 생성할 수 있습니다. 이름 설정하고 계속 넘깁니다. 아래 항목은 체크 안 해도 됩니다. 포트를 설정합니다. ([그림 4].. 2022. 10. 25.
[Tool] FileZilla FTP 설치 및 사용 FileZilla FTP를 통해 FTP 서버에 접속하는 방법입니다. 아래 사이트에 접속합니다. https://filezilla-project.org/ Download FileZilla Client 버튼을 클릭합니다. Download 버튼을 클릭합니다. Download 버튼 하나가 있고 Select 버튼 세 개가 있습니다. Download 버튼을 클릭합니다. Next 신공으로 설치합니다. 실행하면 이렇게 나옵니다. 위의 Quickconnect 영역에서 Host와 Username, PW와 Port를 입력하면 빠른 연결이 가능합니다. 처음 연결하게되면 해당 Host의 PW를 저장할거냐고 묻습니다. 원하는 것을 고르면 됩니다. 연결이 완료되면 이렇게 나타납니다. 왼쪽 영역은 로컬 PC 디렉터리, 오른쪽 영역은 .. 2022. 10. 25.
[PS] 백준 25305번 - 커트라인 | C++ 백준 25305번 문제 write-up입니다. https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 전체 인원에서 상을 받는 참가자의 가장 낮은 점수를 출력하면 됩니다. 전체 인원의 점수 / 상을 받는 사람의 수를 입력받고, 전체 인원 점수를 내림차순 정렬해서 마지막으로 상을 받는 사람의 점수를 출력하면 됩니다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int .. 2022. 10. 24.
[PS] 백준 23628번 - 악마의 연차 계산기 | C++ 백준 23628번 문제 write-up입니다. https://www.acmicpc.net/problem/23628 23628번: 악마의 연차 계산기 첫 번째 줄에는 연차와 월차의 총 개수를 공백을 사이에 두고 출력한다. 두 번째 줄에는 총 근무 기간의 뒤에 days를 붙여서 출력한다. 근무 기간이 1일이더라도 day가 아닌 days를 붙여서 출력해 www.acmicpc.net 입사일, 현재일을 입력하면 연차, 월차, 총 근무일을 출력하는 프로그램입니다. 총 근무일을 구한 뒤 이것을 기준으로 연차, 월차를 계산하는 순서로 작성했습니다. 이 문제에서 제시한 달력은 1달은 30일, 1년은 12개월이며 1년이 360일입니다. 1. 총 근무일 계산 Year - Month - Day 따로 입력받기 때문에 각 항목을.. 2022. 10. 18.
[PS] 백준 23627번 - driip | C++ 백준 23627번 문제 write-up입니다. https://www.acmicpc.net/problem/23627 23627번: driip 드립이가 생각하기에 주어진 문자열이 귀여우면 "cute", 그렇지 않으면 "not cute"를 출력한다. (따옴표 제외) www.acmicpc.net 문자열이 "driip"로 끝날 경우 cute를 출력하면 되는 것으로 보입니다. substr()을 통해 마지막 5글자만 추출한 후, driip와 비교하면 됩니다. 해당 풀이로 작성한 소스코드입니다. #include #include using namespace std; int solution(string s) { if (s.size() < 5) return 0; string last = s.substr(s.size() - .. 2022. 10. 18.
[CTF] webhacking.kr 24번 Write-Up webhacking.kr 24번 문제풀이 Write Up 입니다. client ip와 agent 정보가 나오고, 잘못된 IP라고 뜹니다. 소스코드입니다. PHP 영역만 따로 빼서 분석해 보겠습니다. 접속IP가 127.0.0.1이면 문제가 해결되는 것 같습니다. 그러나, IP는 str_replace()에 의해 필터링되고 있고, IP정보는 어떻게 속여서 전송해야 할지도 생각해야 합니다. 일단 str_replace() 먼저 해결해봅니다. str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 이런 구조로 이루어져 있습니다. 이 함수의 취약점은, 필터링 후 남은 문자로 재조합이 가능하다는 것입니다. 예를 들어 admin이 str_replace("admin", "", $str) 이렇게 .. 2022. 10. 18.
편의점에서 파는 일회용 스마트폰 배터리 CU에서 구매한 일회용 배터리입니다. 편의점에서 라면 먹다가 발견했는데 마침 휴대폰 배터리가 얼마 남지 않아 궁금해서 사 봤습니다. 가격은 4천원이었고 1500mAh 용량이라고 적혀 있습니다. C타입(하늘색)과 라이트닝(핑크) 2개가 있었는데 저는 C타입으로 구매했습니다. 이렇게 생겼는데, 편의점마다 디자인이 다른 것 같습니다. 충전기를 꽂은 모습입니다. 충전 속도가 빠르지 않기 때문에 꽂아도 배터리가 닳는 현상이 있을 수 있습니다. 배터리가 5% 정도일 때 쓰라고 만든 제품이라 그냥 휴대폰 충전하려고 사면 가성비가 좋지 않습니다. 배터리가 진짜 없을 때는 4천원의 값을 하겠지만, 그렇지 않다면 집 가서 충전하는 게... 포장지에 버릴 때 막 버리지 말라고 쓰여 있습니다. 안에 있는 배터리를 꺼내서 분리.. 2022. 10. 18.
[CTF] webhacking.kr 23번 Write-Up webhacking.kr 23번 문제풀이 Write Up 입니다. 접속하면 텍스트박스와 미션 설명이 있습니다. alert() 스크립트를 실행하면 된다고 합니다. 이번 문제는 XSS(Cross Site Scripting)를 성공시키면 되는 것 같습니다. 이렇게 직접적으로 입력하면 핵 쓰지 말라고 합니다. filtering이 걸려있어서 그런 것인데, 우회해서 alert()를 호출하는 방법을 생각해 봐야겠습니다. 태그를 입력해 보았는데 아래 텍스트 크기가 커졌습니다. 크기가 커지니까 좀 징그럽습니다. 의미없는 문자열도 2글자 이상이면 다 filtering 되는 것 같습니다. 문자열 개수 filtering을 우회해야 할 것 같습니다. 검색을 해보다가 php filtering 함수 중 eregi() 함수의 취약점.. 2022. 10. 18.