본문 바로가기

ROP(Return Oriented Programming) /* written by kaspy (kaspyx@gmail.com)*/ 1. 시작하며 ROP(Return Oriented Programming) 이란 버퍼 오버플로우 취약점이 발생하는 바이너리를 exploit 할때 가장 많이 사용되는 기법으로 바이너리 내부에 존재하는 gadget을 사용하여 호출 함수 및 인자를 조작하는 방법이다. 솔직히 관련 자료도 굉장히 많은데.. 나도 복습 할겸 정리해보았다. 일반적으로 ASLR이 걸려있는 바이너리는 Memory leak 또는 got, plt 등에 함수가 존재해야하는 특수한 전제가 붙어야 exploit 가능하지만, ROP 기법을 사용하면 (PIE가 걸려있지않아야함) 바이너리의 고정주소의 gadget을 활용하여 exploit 할수있다. 여기서 gadget이란 바이너리.. 더보기
자바 리플렉션(Java Reflection) /* written by kaspy (kaspyx@gmail.com)*/ 자바 리플렉션(Reflection)이란 컴파일된 자바 코드에서 역으로 클래스를 불러서 메소드(Method) 및 변수(Field)를 구해오는 방법으로 클래스를 동적 로딩하여 사용할때 많이 사용되고 디컴파일할때에도 자주 사용되는 기법이다. 1. 리플렉션(Reflection) 기본 예를들어 아래와 같이 Class가 있다고 하면 생성자(Constructor)도 있을것이고, 필드(Field) 및 메쏘드(Method)도 있을것이다. vi MyClass.java public class MyClass{ private static String myName = null; public String pubString = null; private void.. 더보기
파이썬 장고(Django) - MTV 패턴을 통한 웹서버 개발하기 /* written by kaspy (kaspyx@gmail.com)*/ 저번 포스팅에 이어서 이번에는 장고(Django)를 이용해서 웹페이지를 추가하고 이에대한 요청을 처리하는 웹페이지를 만드는 과정을 다루어보도록하겠습니다. 구현된 소스코드에는 자세히 다루지는 않겠지만 따라하기만 해도 어느정도 이해하는데 도움이 될것으로 생각합니다. 개발 환경은 Ubuntu Linux 16.04 기준 1. 기본 프로젝트 및 구조 생성하기 우선 장고를 사용한 웹서버 구축하기를 먼저보고 오는게 좋을것이다. - link 1) 프로젝트 생성 웹서버라면 제공하는 서비스에따라 다양한 요청을 처리할수있어야한다. 우선 프로젝트를 추가하고 어플리케이션을 추가하도록 하겠다. 이번 포스팅에서는 설문조사를 하는 사이트를 만들어보도록 하겠다... 더보기