본문 바로가기

Security_59

[Pwnable] Fake EBP 정리 [Fake EBP] ebp를 속이는 기법으로 sfp를 조작 가능하고, ret의 값을 leave / ret 가젯의 주소로 변경이 가능할 때 이용한다.즉, ebp를 속이고 leave / ret를 한번더 실행시키는 기법 이 기법의 핵심은 함수의 에필로그 부분을 이용하는 것이다 leavemov esp, ebppop ebp retpop eipjmp eip 원리1. (leave) mov esp, ebp 를 통해서 esp를 ebp로 이동시킨다.2. (leave) pop ebp 를 통해 변조된 ebp를 꺼낸다.3. (ret) pop eip 를 통해 eip는 leave / ret 를 가리킨다. 즉, ret에 leave / ret 가젯이 들어있어야한다.4. (ret) jmp eip 를 통해 leave / ret 가 한번더.. 2018. 11. 6.
[Reversing] call, ret, leave 어셈블리어 [call, ret, leave 어셈블리어] call- push eip- jmp [주소] ret- pop eip- jmp eip leave- mov ebp, esp- pop ebp 2018. 10. 9.
[Reversing] gdb 표기방식 변경 [gdb 표기방식 변경] - 왼쪽이 AT&T 표기방식, 오른쪽이 Intel 표기방식이다. 왼쪽으로 설정하고 싶으면 set disassembly-flavor at오른쪽으로 설정하고 싶으면 set disassembly-flavor intel 이라고 입력을 하면 된다. [AT&T, Intel 표기방식 차이] 2018. 10. 8.
[etc] 쉘 코드 모음 [쉘 코드] - 6바이트 코드 exit() 코드 \x31\xc0\xb0\x01\xcd\x80 - 16바이트 코드 setreuid(geteuid(),geteuid()) 코드 \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80 - 25바이트 코드 일반적인 쉘코드 \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 - 26바이트 코드 scanf로 입력받을 경우 사용 (scanf는 \x09, \x0a, \x0b, \x0c, \x0d, \x20를 읽지 못함) \x31\xc0\x50\x68\x6e\x2f\x73\x68\x68.. 2018. 10. 3.
[etc] Stack? [Stack] 스택(stack) : 메모리의 한부분으로 LIFO 방식으로 동작하는 특별한 자료 구조 LIFO(Last Input First Output) : 나중에 입력된것이 먼저 나온다. (후입선출) (3이 제일 나중에 들어가고 3이 제일 먼저 나온다) 스택은 POP과 PUSH 두가지 동작을 지원한다.PUSH : 데이터를 스택에 집어넣는다. PUSH 3 _ 3을 스택에 넣는다POP : 데이터를 스택에서 꺼낸다. POP 3 _ 3을 스택에서 꺼낸다. 스택은 높은주소에서 낮은주소로 쌓인다. PUSH를 하면 ESP-4 즉, 4바이트가 감소한다.POP을 하면 ESP+4 즉, 4바이트가 증가한다. 알아두면 좋을 게시물 [메모리 구조] [ESP, EBP 란?] 2018. 10. 1.
[Reversing] OllyDbg 설치 #64bit [OllyDbg 설치] OllyDbg : 바이너리 코드 분석을 위한 디버거 (32비트 운영체제 전용이다) OllyDbg 다운로드 공식 페이지 64비트에서 사용하기 - Olly Advanced 플러그인을 적용하면 Ollydbg를 64비트에서 사용이 가능해진다. [Olly Advanced 플러그인은 OllyDbg의 버그 패치, 다양한 안티 디버깅에 대한 방어 기능을 지원한다.] - 다운 받은 Olly Advanced v1.27.rar을 압축해제 한 후 advancedolly.dll 플러그인 파일을 OllyDbg설치 폴더에 복사한다. - Olly Advanced 플러그인의 옵션 메뉴를 선택한다. * Plugins 메뉴가 없는 경우 : Plugins 옆의 Options - Appearance - Directio.. 2018. 8. 24.
[etc] 빅/리틀 엔디언 #비교 [빅/리틀 엔디언] 빅 엔디언 : 작은 단위가 앞으로 온다.리틀 엔디언 : 큰 단위가 앞으로 온다.미들 엔디언 : 두 경우에 속하지 않거나 둘을 모두 지원하는 경우 저장 방식10진수 빅 엔디언 리틀 엔디언0 0x00000000 0x000000001 0x00000001 0x010000002 0x00000002 0x02000000 표현 _ 0x12345678- 빅 엔디언 : 12 34 56 78 - (높은주소 ---- 낮은주소) - 리틀 엔디언 : 78 56 34 12- (낮은주소 ---- 높은주소) - 미들 엔디언 : 34 12 78 56 or 56 78 12 34 장점 - 빅 엔디언 : 디버그를 편하게 해준다 (메모리의 값을 보기가 편함) ex) 0x59654148 : 59 65 41 48- 리틀 엔디언.. 2018. 8. 24.
[Reversing] 어셈블리어 비교 #Intel vs AT&T [어셈블리어 비교] Intel : 접두사 _ h(16진수), b(2진수), 0(6진수)AT&T : 접두사 _ %(레지스터), $(값) Operands의 위치 차이 _ Intel 과 AT&T는 정반대이다.Intel destination, sourceAT&T source, destination 메모리 주소 참조Intel [eax]AT&T (%eax) 2018. 8. 24.
[Reversing] Reversing? [시작] 리버싱 : 프로그램의 구조, 기능, 동작 등을 역으로 따라가며 분석하고 그 원리를 이해하며 부족한 부분을 보완하며 새로운 기능 등을 추가하는 작업 분석 방법- 정적분석 : 파일의 겉모습을 관찰하며 분석하는 방법. 즉, 파일을 실행하지 않고, 파일의 종류(exe, dll, doc, zip 등), 크기, 헤더정보, 실행 압축 여부, 등록 정보, 디지털 인증서 등의 내용을 확인하는 것. 또한 디스어셈블러를 이용해서 내부코드와 그 구조를 확인하는 방법이다.- 정적 화이트박스 분석 : 프로그램을 실행하지 않고 소프트웨어의 설계, 코드나 구조 등에서 상세하게 버그를 찾을 수 있는 방법- 정적 블랙박스 분석 : 프로그램의 소스코드를 파악할수 없고, 실행시키지도 않은 상태에서 수행하는 분석.- 동적분석 : 파.. 2018. 8. 21.
[web] 웹 크롤러란? [웹 크롤러란?] 웹 크롤러(web crawler) : 인터넷 상에 있는 자료들을 가져와 분석하기 쉬운 형태로 가공하는 컴퓨터 프로그램 크롤링(crawling) : 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위 크롤링을 해서 데이터를 개인 하드에 소장하는 것 까지는 합법이다. 하지만, 배포를 한다면 그때부턴 합법과 불법이 갈린다고 한다. 사용하는 곳- 구글 : 수 많은 웹 사이트를 클롤링하여 검색서비스를 제공- 쿠차 : 각종 소셜커머스 사이트를 크롤링 하여 최저가 정보 제공- 지진희 알림 : 각종 커뮤니티에서 지진에 관련된 글을 수집하여 지진 발생시 텔레그램으로 알림 사용하는 이유- 현대 사회는 정보 경쟁이 일상화 되었다- 많은 정보의 양만큼 양질의 자료를 찾기 어렵다- 정보를 찾는데 많.. 2018. 8. 18.
[web] APM 연동과정 [APM 연동과정] 1. 클라이언트 측의 컴퓨터 사용자가 웹 브라우저에 있는 URL을 입력하여 원하는 정보를 서버에 요청하고, 서버의 Apache프로그램은 승인한다. 2. 해당 정보를 제공하기 위해 PHP에게 스크립트 실행하기를 요청하고 PHP는 미리 작성된 프로그램을 통해 MySQL에 쿼리를 질의한다.3. MySQL은 데이터베이스에 저장된 데이터를 가져와 PHP에게 돌려주고 PHP는 데이터베이스에서 가져온 데이터와 PHP코드를 모두 HTML 형태로 변경하여, 해당 HTML 파일을 Apache에게 전송한다.4. Apache는 완성된 HTML 파일을 클라이언트 측의 컴퓨터 웹 브라우저에 전달한다. 쿼리 : 데이터베이스에 정보를 요청하는것ex) select id from member _ MySQL 쿼리문 [.. 2018. 8. 7.
[web] GET, POST 차이 [GET vs POST] GET : 리소스 취득- URL 형식으로 웹 서버측 리소스(데이터)를 요청 POST : 내용 전송(파일 전송 가능)- 클라이언트에서 서버로 어떤 정보를 제출함- 요청 데이터를 HTTP 바디(body)에 담아 웹서버로 전송함 결론URL _ GET _ 가져오는 것Form _ POST _ 수행하는 것 차이점 - GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙는다- POST는 Body안에 숨겨져서 보내진다. GET방식 _ http://example.php?id=admin&pw=admin (?뒤에 값이 이어 붙는다)POST방식 _ Body안에 숨겨져 있기 때문에 따로 URL에 표시 (x) _ 볼 수 있는 방법은 있다. - GET은 URL에 이어붙기 때문에 길이 제한이 있어 많은 양의 데이터를.. 2018. 8. 7.
[web] SQL injection [SQL injection] SQL 이란?SQL = Structured Query Language관계형 DB의 데이터를 다루는 표준형 프로그램 언어 SQL 실행 과정 DB - SQL 실행 - 결과 [그림 추가] SQL injection이란?SQL injection = 웹 사이트의 보안상 허점을 이용하여 특정 SQL 문을 보내 DB의 중요 정보나 공격자가 원하는 정보를 가져오는 해킹 기법. SQL injection으로 가능한 공격- 인증 우회- 기밀 데이터 접근- 웹 사이트 콘테츠 변경- DB 서버 shutdown SQL injection 우회 기법= : like, insubstr : substring, mid, left, rightunion : = union select user, password fro.. 2018. 8. 3.
[etc] 메모리(Memory) 구조 [메모리 구조] 커널(Kernel) 영역- 시스템 운영에 필요한 메모리로, 운영체제가 커널영역에 존재한다.- 사용자는 함부로 커널 영역에 접근할 수 없다.- 스택은 낮은주소로 쌓이기 때문에 커널영역을 침범하지 않는다. (데이터 영역 위에 코드영역이 존재한다. 코드영역은 코드 자체를 의미한다) 유저(User) 영역- 하나의 프로세스는 유저영역에서 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어져 있다. 데이터(Data) 영역- 전역 변수와 static 변수가 할당되는 영역- 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 소멸됨(전역변수가 프로그램이 종료될 때 까지 존재하는 이유) 힙(Heap) 영역- 필요에 의해 동적으로 메모리를 할당 할 때 사용(동적할당 같은 경우는 힙 .. 2018. 4. 29.