일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 장고
- db
- JPA
- 개발
- 자료구조
- 웹 개발
- 스프링부트
- node.js
- 웹
- Spring
- 자바
- HTTP
- bytecode
- 보안
- 스프링 부트
- 안드로이드
- python3
- rabbitmq
- Spring Boot
- 파이썬3
- 스프링
- django
- mysql
- java
- 디자인 패턴
- BCI
- 파이썬
- 데이터베이스
- Python
- ORM
- Today
- Total
목록보안 (10)
semtax의 개발 일지
개요 이번 포스팅에서는, script 태그를 원격에서 불러올때, 발생 할 수 있는 CORS 문제에 대해 알아보도록 하겠습니다. 회사에서 성능 모니터링 수집도구를 만들다가 발생한 이슈가 있어서 하루종일 삽질을 하다가, CORS에 대해 공부하게 되어 그 내용을 정리하였습니다. CORS? 먼저 구글에서, CORS의 정의를 찾아보면 아래와 같습니다. Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources on a web page to be requested from another domain outside the domain from which the first resource was served.[1] A web ..
개요 해당 포스팅은, 1년전에 학교 과제로 정리했던 내용을 그냥 묵혀두기에는 아까워서 블로그에 포스팅을 하는 내용입니다. 따라서, 틀린 부분이 많을 수도 있으니 너그럽게 봐주시면 감사하겠습니다. 1. 인텔 메모리 관리기법 분석 1-1. Address Model in Intel 1-1-1. 주요 특징들 인텔의 Address Model은 3가지로 나누어 지는데, 각각 Flat Memory Model, Segmentation Memory Model, Real Address Model로 나눌 수 있다. 첫번째로는, Flat Memory Model이다. Flat Model과 같은 경우 코드나 데이터 영역이(세그멘테이션 같이) 따로 영역이 나누어지지 않아서, 32bit 기준으로, 0~2^31-1 byte 에 해당하..
소개 이번 시간에는 pwnable.kr 에 있는 fd 라는 문제를 풀어보도록 하겠습니다. 풀이 먼저, 아래 주소에 ssh를 이용해서 접속해줍니다. ssh fd@pwnable.kr -p2222 접속해서 파일들을 살펴보면 아래 파일들이 있는것을 볼 수 있습니다. fd fd.c flag 먼저 문제 코드를 읽어 보도록 하겠습니다. 문제 코드는 아래와 같습니다. #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc
소개 이번 포스팅에서는, CSRF가 무엇인지에 대해 다루고 부가적으로 관리자 기능을 활성화 시키는 법에 대해서도 다루도록 하겠다. 문제점 사실, 지난 포스팅 까지 진행 했던 내용을 그대로 실행시키면 에러가 발생 할 것이다. 에러 메시지를 자세히 보면 CSRF 라는 단어와 403 에러가 뜨면서 뭔가 인증에 실패했다라는 말이 보일 것이다. 이제 CSRF가 무엇인지에 대해 알아보자. CSRF CSRF 공격은 Cross-site request forgery 공격의 약자로, 사용자가 자기 의지와는 상관없이 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 방식으로 수행하는 공격이다. 예를 들어 우리가 제작한 스도쿠 사이트를 예를 들면, 공격자가 아래와 같은 스크립트를 작성하여 공격을 할 수 있는것이다. 클릭하..
개요 이번 포스팅에서는 웹 서비스 개발시에 유용하게 써먹을 수 있는 Fiddler라는 툴에 대해서 설명을 하도록 하겠다. Fiddler는 웹 디버깅 프록시 프로그램으로, HTTP와 HTTPS 프로토콜을 캡처해서 분석 할 수 있는 도구이다. 사실, 서버개발자 뿐만 아니라, 모바일 앱 리버싱 할때에도 쓰이고, 웹 해킹 문제 풀때에도 쓰이고, 클라이언트 개발할때도 쓰이고 여튼 다양하게 쓰인다. 사실, MAC OS X 에서는 Fiddler가 없었던걸로 알고 있었는데 맥 버전도 찾아보니 나와서 소개를 하게 되었다. 설치 https://www.telerik.com/fiddler 위 사이트에 방문해서 설치를 해주면 된다. 사용법 아래 사진은 Fiddler를 실행한 화면이다.(맥 버전 기준) 아래 사진이 HTTPS 패..
1. Tree API를 이용한 메서드 조작 ASM에서 제공하는 MethodNode는 대략적으로 아래와 같이 생겼습니다. public class MethodNode ... { public int access; public String name; public String desc; public String signature; public List exceptions; public List visibleAnnotations; public List invisibleAnnotations; public List attrs; public Object annotationDefault; public List[] visibleParameterAnnotations; public List[] invisibleParameter..
1. 자바 제네릭(Generic) & 타입구조 소개 사실 자바 제네릭은, 초창기 자바에는 존재하지 않는 문법이었다. 그래서 타입이나 메서드 정보와 문법적으로 흡사함에도 불구하고, 해당영역이 아닌, 별도의 다른영역에 저장된다. 또한 제네릭같은경우 실제 실행되는 바이트코드에는 영향을 미치지 않기 때문에 별도의 영역에 저장을 해도 따로 문제가 생기지는 않는다. 자바 스펙문서상에서 제네릭의 문법은 아래와 같은 EBNF(Extended Bacus-Naur Form)으로 정의되어있다. 문법의 정의가 꽤나 복잡하다는것을 알 수 있다. TypeSignature: Z | C | B | S | I | F | J | D | FieldTypeSignature FieldTypeSignature : ClassTypeSignatu..
1. JVM은 어떻게 클래스 파일을 실행하는가? 일단 자바가 어떠한 방식으로 컴파일된 클래스 파일을 실행하는지 알아보자. 먼저, JVM(자바 가상 머신)이 컴파일된 클래스파일을 읽어서 메모리에 로딩을 한다. 그 다음에, JVM이 클래스 파일에 있는 바이트코드를 순차적으로 읽으면서 그에 맞는 동작을 수행한다(사실 요즘에는 JVM이 속도를 위해서 자주 사용하는 부분을 파악해서 Just in time 방식을 이용해서 해당 부분을 미리 Native Code로 변환을 해서 실행을 한다). 이때 자바에서는 이러한 바이트코드들을 실행하는 기본 단위가 스레드(Thread)이다. 또한, 자바에서는 각 스레드 별로 Execution Stack(JVM Stack)을 1개씩 가지고 있다. 또한 각 스레드에서 함수를 호출할시 ..