EVI$ION
-
[시스템해킹 #3] 메모리 보호 기법, 쉘코드, 환경변수EVI$ION/SYSTEM HACKING 2019. 5. 6. 03:32
[메모리 보호 기법] ASLR (Address Space Layout Randomization) ASLR은 메모리 상의 공격을 어렵게 하기 위해 스택이나 힙, 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에 배치함으로써 실행할 때마다 데이터의 주소가 바뀌게 하는 메모리 보호 기법이다. 주소가 완전히 랜덤으로 바뀌는 것은 아니고, 순서와 패턴은 어느 정도 유지한다. ASLR의 적용 여부는 cat /proc/self/maps 명령을 통해 알 수 있다. /proc는 process의 준말로, 프로세스의 정보들이 저장되는 디렉터리이다. /proc/self는 현재 실행되고 있는 프로세스의 정보가 저장되어 있는 디렉터리이고, /proc/self/maps는 현재 실행되고 있는 프로세스의 주소 맵을 가리킨다. 아래..
-
[시스템해킹 #2] 어셈블리어, 함수 프롤로그/에필로그, gdb, setUIDEVI$ION/SYSTEM HACKING 2019. 5. 5. 21:51
저번 시간에 했던 어셈블리어를 복습 겸 다시 되짚어보았다. [어셈블리어] CALL [접근할 함수 주소] PUSH EIP // 현재 EIP가 가리키는 값을 스택에 저장한 뒤 JMP [접근할 함수 주소] // [접근할 함수 주소]로 점프한다. PUSH [인자] 스택 영역에 4바이트 공간을 할당하고, [인자] 값을 스택에 저장한다. CALL 전에 PUSH가 나오는 경우, PUSH는 인자를 전달하는 역할을 한다. POP [인자] ESP가 가리키는 곳의 값을 [인자]에 저장한 후, ESP가 가리키는 곳이 4바이트 올라간다. RET POP EIP // ESP가 가리키는 값을 EIP에 저장하고 ESP가 4바이트 올라간다. JMP EIP // 방금 저장한 EIP 값으로 점프한다. SUB [인자1], [인자2] 인자1 ..
-
[시스템해킹 #1] 함수의 호출/복귀 원리, 메모리 구조, 스택 프레임, 함수 프롤로그/에필로그, 지역변수/전역변수 할당, 어셈블리어 기EVI$ION/SYSTEM HACKING 2019. 5. 5. 00:48
[함수의 호출/복귀 원리] 아래 코드의 메인 함수 내에서 정의된 함수(get_area)가 호출되면, 컴파일러는 해당 함수(get_area)의 시작점으로 간다는 의미의 기계어를 생성한다. 이 기계어로 인해 프로그램 실행 도중에 함수를 만나면(12번 라인) 프로그램은 함수의 시작점(1번 라인)으로 되돌아가 함수를 수행한다. 함수 수행을 모두 끝마치면 프로그램은 처음 함수가 호출된 곳으로 다시 되돌아가는데, 그 이유는 함수의 리턴값을 변수(area)에 저장해야 하기 때문이다. 그런데 같은 함수를 여러 번 사용하는 경우, 함수가 호출된 위치를 미리 기록해두지 않으면 함수 수행이 끝난 뒤 그 다음 코드로 되돌아갈 수 없기 때문에 프로그램이 무한 루프에 갇힐 위험이 있다. 그래서 프로그램은 함수가 호출되기 직전, ..
-
[웹해킹 #3] Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF)EVI$ION/WEB HACKING 2019. 5. 2. 02:35
[크로스 사이트 스크립팅(XSS) 공격] XSS 공격이란, 공격자가 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후, 사용자의 웹 브라우저에서 해당 코드가 실행되도록 하는 공격 기법이다. 즉, 서버의 취약점을 이용하여 클라이언트를 공격하는 방식으로, 자바 스크립트를 이용하여 세션 쿠키를 탈취할 수 있다. XSS 공격의 종류로는 Reflected XSS 공격과 Stored XSS 공격이 있다. 자바 스크립트 (Java Script) 웹 어플리케이션에서 사용되는 언어 중 하나 HTML이 텍스트, 이미지 등의 정적인 내용을 표시해주는 언어라면, 자바 스크립트는 이벤트와 같은 동적인 기능을 구현해주는 언어이다. 구현 방법: XSS 공격 자바 스크립트 코드 // 원격지에서 쿠키를 탈취 // hacker.co..
-
[웹해킹 #2] SQL InjectionEVI$ION/WEB HACKING 2019. 4. 9. 00:00
[SQL Injection - WHERE 구문 우회, UNION 공격] SQL 인젝션이란, 데이터베이스에 전송되는 SQL 쿼리문을 조작하여 데이터를 변조하거나, 허가되지 않은 정보에 접근하는 공격이다. 주로 개인정보를 빼낼 때 많이 사용되는 기법이다. 정상적인 웹 요청 및 응답에서는, 사용자가 ID를 입력하면 서버는 SQL 쿼리문을 통해 데이터베이스에 접근하여 해당 ID가 있는지 검색하고, 정보가 있으면 검색 결과를 사용자에게 전송한다. 이때의 SQL 쿼리문은 아래와 같다. $id = $_REQUEST['id']; $query = "SELECT name, email FROM users WHERE id = '$id';"; 그러나 만약 ID 입력칸에 1' or '1'='1을 입력한다면, WHERE문의 조건이..
-
[딥러닝 #1] 딥러닝의 기초EVI$ION/DEEP LEARNING 2019. 4. 1. 06:03
[인공지능과 머신러닝, 딥러닝의 차이] 인공지능: 인간과 유사한 사고 구조를 컴퓨터로 구현한 기술이다. 머신러닝: 기계를 학습시킴으로써 인공지능의 성능을 보다 향상시킨 기술이다. 사람이 직접 필요한 데이터를 넣으면, 기계는 이를 학습하여 인간보다 더 정확하고 올바른 결과를 도출해낸다. 딥러닝: 머신러닝과 유사하지만, 머신러닝처럼 사람이 데이터를 선정해 학습시킬 필요가 없이 아무 데이터나 넣어도 기계 스스로가 학습하여 필요한 특성을 찾아나가는 기술이다. [딥러닝이 데이터를 처리하는 방식, 신경망(Neural Network)] 딥러닝은 인간의 뉴런과 비슷한 인공신경망(Artificial Neural Network, ANN) 방식으로 정보를 처리한다. 따라서 이 신경망을 학습시키는 것이 딥러닝의 핵심이다. 그..
-
[웹해킹 #1] 웹의 기초, DVWA 실습EVI$ION/WEB HACKING 2019. 3. 20. 18:15
[WWW (World Wide Web)] WWW(World Wide Web)은 URL, HTML, HTTP로 이루어져 있다. 1. URL (Uniform Resource Locator) 네트워크 상의 자원의 위치(경로)를 나타내는 규약 통신규칙(프로토콜)://인터넷 호스트 주소/경로 이름으로 나타낸다. ex) https://news.naver.com/main/main.nhn?mode=LSD&mid=shm&sid1=105 ① ② ③ ④ ① 사용중인 프로토콜 정보를 나타낸다. 웹 서버는 http와 https를 주로 이용한다. ② 현재 접속 중인 웹 서버의 주소를 나타낸다. 즉, IP나 도메인 정보이다. ③ 보통 파일 디렉토리를 나타내고, 여러가지 소스 파일로 구성되어 있다. (※ 파일 디렉토리 경로 전체가 ..