Old (2021.01 ~ 2021.12)

노션으로 작성했기에, 아래 링크로 접속한다면 볼 수 있습니다. https://dyp4r.notion.site/CVE-2021-44228-log4shell-2a96306d9fce4c438a2f6e602c518507?pvs=4
위는 ./files 폴더 내의 test.txt 파일을 읽어서 그 내용을 화면에 보여주는 간단한 php 코드다. 실행해보면 test.txt에 작성한 내용이 잘 출력되는 것을 볼 수 있다. 지금은 정상적인 값이 test.txt에 들어있지만, 보안적 관점에서 만약 이 test.txt에 보안적 위협이 되는 값이 저장돼 있으면 어떻게 될까? 예를들면 script 태그로 감싸져 있는 자바스크립트 코드 말이다. echo 명령어는 string 변수의 값을 html 코드로 변환해주는 역할을 한다. 그렇기에 script 태그로 감싸진 문자열이 string 변수 안에 들어있다면, html로 변환하는 과정에서 자바스크립트 코드로 인식이 되고 사용자한테 페이지를 보여줄 때 그 문자열이 실행될 것이다. 위에서 말한대로 test...
배열 php 역시 배열이 존재한다. php의 배열은 c, c++, c# 등의 언어와 다르게 다른 자료형의 값들도 한 배열 안에 넣을 수 잇는데, 이는 python과 비슷하다. 배열 선언 방식은 조금 특이하게 느껴졌는데, 선언 방식은 아래와 같다. $ = array(, ); 이 말고도 아래와 같은 방법도 가능하다. $[] = ; 이 방법의 경우 변수가 미리 선언되지 않아도 가능하다. (선언되어 있는 배열에 대해서 요소를 추가할 때도 가능하다.) array를 써준뒤 괄호안에 배열에 들어갈 요소를 넣어야지 배열을 만들 수 있다. 만들어진 배열에 요소를 추가할 때는 array_push(, );을 통해 넣을 수 있다. count()를 사용한다면 배열의 길이를 구할 수 있다. 이 밖에도 array_search, s..
조건문이란 특정 조건식이 참일 때 특정 코드를 실행해주는 문법을 말한다. 분기를 나눠준다고 생각하면 된다. php의 조건문은 다른 언어들과 비슷하게 if문과 switch문이 있다. if 문 php의 if문은 if, else if, else로 이뤄진다. 구조는 아래와 같다. if() { } else if() { } else { } 예시로 if, else if, else를 하나씩만 사용했는데 else if의 경우 여러 번 사용이 가능하다. else if, else는 단독으로 사용할 수 없고 무조건 위에 if문이 존재해야지만 사용이 가능하다. 필요하다면 조건에 &&(and), ||(or) 연산자를 사용할 수 있다. 아래는 조건문과 $_GET을 이용한 간단한 예시다. GET방식으로 받아오는 val의 값이 무엇이..
GET 방식이란..? get, post 방식에 대한 설명은 다른 블로그 등에 잘 나와있으므로 자세히 하지는 않겠다. get 방식은 url을 통해 다른 페이지로 값을 전달하는 것을 말한다. get 방식으로 값을 전달할 경우 대상 페이지 url 맨뒤에 ?를 작성하고 키와 전달할 값을 넣는다. 여기서 키는 대상 페이지에서 전달된 값을 사용할 때 사용한다. 예) "https://dyp4r.php?id=admin" 위 예시 url은 dyp4r.php 페이지에 키 값은 'id'로 'admin'이라는 문자열 값을 전달하는 것이다. 해당 페이지에서는 키 값인 'id'로 'admin' 값을 사용할 수 있다. 만약 전달하고자 하는 값이 여러개라면 값들 사이를 &으로 구분지어서 전달할 수 있다. 예) "https://dyp..
-php 코드 작성- PHP 코드는 사이에 작성해야 한다. -출력- echo, print() 함수를 이용하면 어떤 문자나 문자열, 값, 변수 등을 화면에 출력할 수 있다. 정확히 말하면 화면에 출력한다기보다는 html 코드로 출력하는 것인데, 이때 출력할 값에 html 태그가 포함돼 있다면 해당 html 태그가 작동한다. 위 예제에서 . 기호는 문자열을 연결해주는 역할을 한다. 파이썬에서 문자열 사이에 + 기호가 있을 때의 작동을 생각하면 된다. 아래는 echo에 을 안 붙였을 때의 결과다. -자료형과 변수- 다른 언어들과 마찬가지로 int, float, string, boolean 등등의 자료형이 존재한다. 파이썬처럼 변수를 선언할 때 타입을 지정해줄 필요 없이 들어가는 값에 맞춰 자료형이 변한다. 변..
-실습 1-1- 이 실습은 Lab01-01.exe와 Lab01-01.dll 파일을 사용한다. 파일에 관한 정보를 얻으려면 1장에서 사용한 기법과 도구를 사용하고 다음 질문에 대답해보자. -질문- 1. http://www.virustotal.com/에 파일을 업로드한 후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가? Yes, exe, dll 모두 많은 백신이 트로이목마 악성코드로 진단하고 있다. Lab01-01.exe를 virustotal에 올리면 49개의 백신에서 악성코드로 진단하는 것을 볼 수 있다. AhnLab V3 백신이 맨 위에 보인다. Lab01-01.dll을 virustotal에 올리면 40개의 백신에서 악성코드로 진단하는 것을 볼 수 있다. 2. 이 파일은 언제 컴..
Win32 DLL -Kernel32.dll- 메모리 관리, 파일, 하드웨어 접근, 입출력 명령, 프로세스와 스레드 생성 등의 기능을 하는 API가 들어있다. Win32 프로그램 동작을 수행하는데 핵심적인 api들이 많이 들어있어 자주 사용하는 dll이다. -Advapi32.dll- 서비스 관리자, 레지스트리 같은 추가적인 핵심 윈도우 컴포넌트에 접근할 수 있다. -User32.dll- 창, 메뉴 같은 윈도우 사용자 인터페이스의 표준 요소들을 생성하고 다룬다. 또한 gui를 구현할 수 있게 해주고, 사용자 행위 제어와 반응 컴포넌트 등 모든 사용자 인터페이스 컴포넌트를 담고 있다. -Gdi32.dll- 그래픽 장치 인터페이스(GDI) 함수들이 있다. 그래픽 조작 관련 api들이 들어있다 생각하면 될 것 같..
-Virus(바이러스) 정상적인 파일이나 부트 섹터를 감염시켜 악의적인 행동을 하는 것. 주로 저장 매체를 통해 감염된다고 한다. 예를들어 프로그램에 흔히 사용되는 dll 파일을 감염시키거나 운영체제 process 등의 파일을 수정해 복제해버릴 수도 있다. 감염시키기 위해서는 감염시킬 파일들을 수정해야 하므로 파일을 읽고 쓰는 api들이 많이 사용될 것 같다. -Warm(웜) 그 유명한 모리스 웜 악성코드가 해당되는 악성코드 유형이다. 바이러스와 비슷하게 자기 자신을 복제를 하지만 그 대상이 다른 컴퓨터라는 점의 차이가 있다. 이메일, p2p 사이트 등 인터넷이나 네트워크를 통해 확산을하며, 사용자가 이메일이나 p2p에서 해당 악성 파일을 다운 받는다면, 시스템에 해당 악성코드가 설치되고 이 악성코드는 ..
.fini_array overwrite 기법을 공부하다 main 함수가 호출되기 전, 호출되고 종료되기까지의 과정을 정리해봐야겠다는 생각이 들어 작성하게 됐다. -Main 함수 호출 전- 바이너리가 처음 실행될 시에는 ida로 바이너리를 열었을 때 흔히 보게 되는 _start 함수가 호출된다. 이 start 함수는 바이너리 실행 과정에서 필요한 여러 요소들을 초기화하기 위해 __libc_start_main 함수를 호출하게 된다.(__libc_start_main 함수는 libc에 존재하는 함수기 때문에 ida에서는 코드를 볼 수 없다.), void __usercall __noreturn start(__int64 a1@, __int64 a2@) { unsigned int v2; // esi unsigned ..
dyp4r
'Old (2021.01 ~ 2021.12)' 카테고리의 글 목록