본문 바로가기

728x90
반응형

분류 전체보기

(337)
JPGChat : ServerSide Injection 문제를 풀다 기초적인데 어디선가 들었던 내용인 문제에 직면했습니다. 기억이 흐릿해서 다시 정리해보자는 취지에서 간략히 포스팅하기로 했습니다. 소스입니다. 사용자 입력 값이 [REPORT]이면 report_form() 함수가 실행됩니다. 그런데 report_form() 함수는 문제가 있어 보입니다. 아래의 소스를 봅시다. report_from()의 일부분인데 사용자 입력값을 그대로 받아들여 리눅스 명령어를 실행하는 os.system() 함수의 인자 중간에 연결해서 사용하고 있습니다. 마치 ServerSide Injection 으로 풀어낼 수 있을 것 같습니다. 이 경우에는 ';' 문자를 써서 명령어를 연결하여 Reverse Shell을 얻을 수 있습니다. 이 문제에서 요구하는 Root 플래그를 얻어봅시다...
[Vulnhub] Money Box Vulnhub의 MoneyBox 리뷰입니다. Vulnhub에서 ova 파일을 다운로드해서 VirtualBox에 import 하게 되면 스캔을 해야 될 대상의 IP 정보가 알 수 없는 경우가 있습니다. 이때 다음과 같이 netdiscover를 써서 대상 IP를 알아낼 수 있습니다. (가상 머신의 네트워크 환경을 잘 인지하고 시도합시다) 여기서 192.168.200.146이 침투를 시도해볼 내부 IP로 판단됩니다. 스캔을 시도해봅시다. 스캔 단계에서 FTP 서버에 Anonymous 로그인이 허용되어있고 trytofind.jpg 파일이 보입니다. 해당 파일을 FTP 서버에 Anonymous로 로그인 한 다음 잘 저장해둡시다. 이제 HTTP를 대상으로 정보를 얻어봅시다. 힌트가 될 만한 점은 간단하니 과하게 생..
Stack with Python Stack 스택은 배열에 몇 가지 제약사항을 추가한 자료구조이다. 제약사항이란 다음과 같다. 스택의 끝에만 데이터를 삽입할 수 있다. 스택의 끝에만 데이터를 삭제할 수 있다. 스택의 마지막 원소만 읽을 수 있다. 즉 위 3가지 제약사항으로써 알 수 있는 건 Last In First Out이며 이 뜻은 먼저 들어간 놈이 맨 나중에 나오는 놈이다 라고 생각하면 됩니다. Stack은 ADT이며 이는 추상 데이터 타입을 뜻한다. 이 뜻은 개발자나 프로그래머에 의해서 정의되어서 사용된다라는 의미이다. 적어도 Python에서 Stack이라는 자료구조가 built-in 되어 있지 않은 것으로 생각할 수 있다. Definition python에서 stack을 정의할 때는 일반적으로 다음과 같이 정의한다. class S..
[Vulnhub] : y0usef Vulnhub의 "y0usef" 리뷰입니다. y0usef 접근을 시도하기 위해 스캔을 시도해봅시다. ssh, http 포트가 열려있습니다. 대부분의 경우 ssh는 anonymous 로그인을 허용하지 않고 다른 포인트에서 얻은 credential을 통해 로그인을 시도하므로 http부터 살펴보기로 가정하고 접속해봅시다. http로 접속했으나 특징적인 것은 보이지 않으니 다음으로 해야 될 것은 숨겨진 디렉토리를 찾아봅시다. Directory Brute Forcing을 도와주는 도구는 많이 있지만 gobuster를 사용했고 여러 사전파일(wordlist)를 삽질한 끝에 다음과 같은 결과를 얻을 수 있었습니다. 나머지 Status 값은 403인데 반해 administration이 301이니 administrati..
[Docker] Docker에 관련된 여러가지 삽질 Docker Install on Mac m1 docs.docker.com/docker-for-mac/apple-m1/ Apple M1 Tech Preview docs.docker.com dial unix docker.raw.sock: connect CLI를 통해 Docker 이미지를 이것저것 불러오려다가 에러가 났습니다. docker GUI를 이용해 로그인도 해보고 TroubleShoot> Reset to factory defaults를 통해 초기화를 시킨 후 다음과 같은 명령어를 입력하니 docker pull로 docker 이미지가 잘 불러와지는 걸 확인했습니다. $ docker run -it --rm -v /Users/username/rust-raspberrypi-OS-tutorials/01_wait..
[Method] Status가 301인 건에 대해.. "fuzzing 툴을 보다가 우연찮게 응답 값이 301인 녀석들이 보였다. 이게 뭘까?" 301 Permanently Moved fuzzing 툴을 사용하다 보니 응답 값이 200인 녀석들도 있고 301인 녀석들도 보였다. 결과로서 나온 거다 보니 써먹을 한 정보겠지만 응답 값 301인 녀석들이 어째서 써먹을 만한 정보들인지 한 번 구글링 해봤다. http 200은 요청이 성공했음을 나타내는 응답 값이다. 그럼 301은 뭐라고 정의할까? 찾아본 결과 페이지가 로딩이 되면서, header에서 forward처리 될 때, 나타나는 HTTP State 코드라고 한다. 즉 다음과 같지 않을까? "해당 URL이 새로운 URL로 변경되었음을 나타낸다" 그런데 뭔가 부족하다 301은 Permanently Move라고 ..
[Git] 저장소 초기화와 압축 "그동안 커밋 & 푸시로만 저장소에 히스토리를 쌓다 보니 어느 순간에. git의 폴더가 100mb가 넘어버려 push를 하는 과정이 길기도 하고 push에 실패했다." History History 내역 즉 커밋 내역은 살려두고 용량을 압축하거나 줄이는 방법은 없을까 하고 열심히 구글링을 시작하여 다음과 같은 방법을 찾았다. git-scm.com/book/ko/v2/Appendix-C%3A-Git-%EB%AA%85%EB%A0%B9%EC%96%B4-%EA%B4%80%EB%A6%AC Git - 관리 git filter-branch 명령은 커밋 뭉치를 수정하는 데 사용한다. 전체 히스토리에서 파일을 삭제하거나 디렉토리 구조를 변경하는 데 사용한다. git-scm.com 링크를 건 사이트에서는 여러 가지 내용이 ..
[pwn][pwnable.kr] : 파일 디스크립터 유닉스, 리눅스 시스템은 파일이다. 시스템에서 프로세스가 이 파일들을 접근할 때에 파일 디스크립터라는 개념을 이용한다. 파일 디스크립터는 0이 아닌 정수이며 0, 1, 2, 가 있으며 각각 표준 입력, 표준 출력, 표준 에러이다. 관련 문제로는 pwnable.kr의 fd이고 이 문제가 파일 디스크립터라는 개념을 이용하며 소스 코드는 다음과 같다. read 함수는 fd는 파일 디스크립터 ( 0,1,2) , buf는 파일을 읽어들일 버퍼, 32는 버퍼의 크기이다. 즉 fd가 0이 되게 만들어주면 표준 입력을 할 수 있다. atoi(argv [1]) - 0x1234를 보아 프로그램을 실행할 때 인자로 4660 (10진수 4660은 16진수 1234)를 입력하면 0이 된다. 인자로 4660을 입력하자 입력을 할..

728x90
반응형