본문 바로가기

전체 글377

[내장형 시스템] 임베디드 시스템이란? 임베디드 시스템 : 다른 시스템에 내장되어 해당 시스템의 기능 수행을 담당하는 컴퓨팅 시스템이다. 특정 업무를 수행하기 위해 H/W와 S/W를 밀접하게 통합한 컴퓨팅 장치 1) 다른 시스템에 내장 2) 컴퓨팅 시스템(CPU, 메모리, 입출력 장치, 임베디드 SW가 내장) 3) 특정 기능 수행 - 범용 시스템이 아님(특수 목적을 수행하기 위해 만들어짐) - 수행 기능에 특화된 H/W 및 S/W 사용 4) 임베딩하는 시스템에 따라 임베디드 시스템의 요구사항이 달라짐 - 배터리를 이용하는 휴대폰의 경우, 전력 소모의 최소화가 중요함 - 원자로 제어 시스템에 경우에는 실시간 처리가 필요함 임베디드 시스템은 대표적으로 두 부분으로 구분할 수 있다. ** 무조건 아래 두 분류로 나뉘는건 아니다. ① Real-Tim.. 2020. 9. 4.
[JAVA] 자바 기본 자바 프로그램이 실행되는 방식 1) .java 파일이 컴파일 되면 .class파일이 된다. 2) byte 코드(실행코드)로 바뀐다. 3) VM은 byte 코드를 실행시킨다. 자바 프로그램의 구조 public class MyClass{// 다른 곳에서 실행 가능, 메인 클래스 int n = 10; // 클래스 필드(전역변수) void process1(){// static을 안붙일 경우, 메인 메서드에서 객체 생성 후에 사용할 수 있다. } public static void main(String[] args){// 바로 호출할 수 있는 void 자료형 메서드 System.out.println(" .... ");// sysout 치고, ctrl+space하면 자동 생성 } } - static 메서드는 바람직하.. 2020. 9. 2.
[root_me] Filters url 파라미터에 파일명을 넘겨줄 경우, 해당 파일이 실행된다. LFI(Local File Inclusion) 취약점이 존재하는지 확인하기 위해서 ../ 를 입력했고, 에러가 출력되면 LFI에 취약하다고 판단할 수 있다. inc=ch12.php를 입력하면 실행되어버리므로 PHP Wrapper를 사용하여 파일 내용을 불러올 것이다. (+ base64 디코딩) ch12.php에는 password에 관한 내용이 없으므로 password가 들어있을 것 같은 수상한 config.php 파일을 불러오자. password를 찾을 수 있었다. 2020. 9. 1.
SSRF(Server-Side Request Forgery) 취약점 SSRF(Server-Side Request Forgery) 취약점 "PHP Warpper를 사용한 LFI" 라고 생각하면 되려나? 잘 모르겠다. PHP는 Wrapper(래퍼)를 이용하여 파일에 대한 액세스를 추상화하는 취약점을 발생시킬 수 있다. 여러 종류의 PHP Wrapper 방법이 있지만, 가장 많이 시도되는 것은 php://를 사용한 base64 인코딩 방법이다. PHP 5.0.0 이상 버전에서 사용이 가능하고, 우리가 흔히 브라우저에 접속할 때 http:// 를 사용하는 것도 http 프로토콜을 통해 파일이나 리소스에 접근하기 위한 url-syntax 형식의 wrapper라고 한다. (URL scheme 종류) - php:// 다양한 입출력 스트림에 대한 접근 - file:// 로컬 파일 시스.. 2020. 9. 1.
LFI(Local File Inclusion) 취약점 LFI(Local File Inclusion) : 공격 대상 서버에 위치한 파일을 포함시켜 읽어오는 공격 쉽게 이야기해서, 공격 대상 서버에 있는 디렉터리로 접근하여 원하는 파일을 열어볼 수 있다는 것이다. 예를 들어, 아래와 같이 파일 이름을 url 파라미터로 넘겨주어 파일을 불러오는 코드가 있다고 하자. 이러한 부분에서 특수문자 필터링 혹은 적절한 디렉터리 권한 설정을 안 해줄 경우에 LFI 취약점이 발생할 수 있는데, filename을 ../../../../etc/passwd와 같이 넘겨주면 파일을 include 하는데 아무런 제약이 없기 때문에 서버 내에 있는 계정의 모든 패스워드를 훔칠 수 있다. include() 함수 이외에도, include_once(), require(), require_o.. 2020. 9. 1.
[도커 #1] 도커란? (제가 이해한 내용을 바탕으로 작성하였습니다. 잘못된 부분이 있을 경우에는 댓글 남겨주세요.) 도커란? 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 내가 사용하는 가상 머신 VMware의 같은 경우에는 VM에서 사용하는 OS 자체를 가상화하여 컴퓨터 OS에서 동작시키는 방법이다. 가상 머신의 경우에는 무겁고 느리다는 단점이 생기는데, 이를 개선하기 위해 "컨테이너"라고 불리는 프로세스를 격리시키는 방식을 사용한다. 여기서 쉽게 혼동할 수 있는 부분이, '컨테이너 = 도커' 개념으로 생각하는 것이다. 컨테이너에는 다양한 종류의 컨테이너 기술들이 존재하고, 도커는 컨테이너 기술 중에 하나이다. ('컨테이너 > 도커') 또한 도커는 리눅스 컨테이너(LXC) 기술을 기반으로 구축되었으나 이후, 종속 관계에서 벗.. 2020. 8. 31.
[root me] File upload - Double extensions 제목에 나와있다시피 파일업로드 이중 확장자 문제이다. 위의 캡쳐본과 같이 .php.png를 붙여 확장자 검사를 우회해준다. 이렇게 이중 확장자를 통해 확장자 검사를 우회할 수 있는 이유는 - 파일명 오른쪽에서 . 까지 확장자를 구분하고 - 파일을 실행할 때는 왼쪽에서부터 확인하기 때문에 test.php로 먹히기 때문이다. 그리고 내가 놓쳤던 부분은 .password 파일을 찾으라고 했는데 이 파일은 숨겨진 파일이다. . 이 붙으면 숨김 파일이라는 것을 잊지말자. 이전 폴더를 하나씩 확인하면서 .passwd 파일을 찾았다. 플래그 확인 2020. 8. 26.
[los 문제풀이] giant shit을 get방식으로 넘겨주고, 쿼리문을 보면 from 뒤에 shit이 이어진다. 저 쿼리가 정상 작동하기 위해서 우리는 shit에 공백을 넣어주어야 한다. 따라서 공백을 url로 넘겨줘야 하는데, 공백을 넘겨주면 hehe로 빠진다. 필터링되는 것이다. 일반적으로 알고 있는 공백 우회 방법은 아래와 같다. 1. Tab : %09 2. Line feed(\n) : %0a 3. Carrage Return(\r) : %0d 4. 주석 : /**/ 5. 괄호 : () 6. 더하기 : + 하지만 위의 공백 우회 방법들도 필터링되고 있으니, 이 외의 공백 우회 방법을 찾아본다. %a0, %0b, %0c, %20 등이 존재한다. 이 중에서 %0b, %0c를 입력하면 문제가 풀린다. 2020. 8. 14.
[root me] HTTP-Open Redirect 저게 해쉬라는 걸 어떻게 알아; 화나네; 1학년 똑똑이 친구는 h=~ 값에서 32자리라는 것을 보고, md5라는 추측을 했다고 했다. 자괴감 든다. 일단, h=~ 값을 decryption 하려고 했지만, 안 되는 것 같으므로 어떤 값을 해쉬화하였는지 생각해보았다. facebook twitter slack url 부분이 의심스러워서 해쉬 암호화를 해보았더니 h=~ 값들이 각각 나오는 것을 확인할 수 있었다. 해당 url인 http://challenge01.root-me.org/web-serveur/ch52/을 해쉬로 돌려보았다. >> 85f61821b20477c856da5eece0714eb5 위에서 이동되는 링크와 같이 파라미터를 똑같이 따라 해서 아래와 같이 넣어줬다. ?url=http://challen.. 2020. 8. 6.