전체 글 156

[pwnable.tw] start ( write - up )

바이너리파일을 다운받은 후 아이다로 리버싱해보면, 이 바이너리 파일이 _start와 _exit 부분으로 되어있는것을 알수있다.그리고 Checksec로 확인해보면, 아무런 보호기법도 걸려있지 않다.하지만, NC 서버내에 ASRL이 걸려있다는것은 예상할수있다. 일단 프로그램을 IDA로 뜯어보았을때 _start 부분의 시작점은 0x8048060 이므로, 이 주소를 디스어셈블하고 분석해보면 다음과 같다. 14~34부분은 Let's start .... 을 push해주는 부분이고...39~45부분은 write함수를 실행시켜주는 부분이다. 45부분에서 mov al,0x4를 하는데, mov al,0x4는 write함수의 시스템콜이다. 그 후 int 0x80으로 해당 함수를 실행한다.아래 49~55부분은 read함수를 ..

[pwnable.kr] input ( write - up )

[1] 코드분석처음 이문제를 풀때, 나도그랬고, 아마 여러분들도 그랬을 것이다.솔직히 그냥 문제보고 나갔다.근데 지금은 toddler 부분은 다풀어야겠다고 생각이 들었다.그래서 시도해본다.솔직히 나는 이문제가 pwntools 공부하는데 큰 도움이 되었던것 같다. 나중에 다시 pwntools로 익스를 작성해 봐야겠다.익스코드는 https://mandu-mandu.tistory.com/76 를 참조했다.시작해보자.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869#include #include #include #include #i..

카테고리 없음 2019.04.18

[Reversing] 32bit와 64bit의 차이 ( 함수호출규약, 레지스터 )

[ 1. 기본적인 차이 ]일단, 비트가 무슨 의미인지 알아보자.비트 ( bit )란, 2진수 0과 1을 포함할수있는 크기를 말한다.이러한 비트가 2^3 ( 8 )개가있으면 바이트 ( byte ) 이다.이러한 바이트가 2^10 ( 1024 )개 있으면 킬로바이트 ( kbyte ) 이다.이러한 킬로바이트가 2^10 ( 1024 )개 있으면 메가바이트 ( mbyte ) 이다.이러한 메가바이트가 2^10 ( 1024 )개 있으면 기가바이트 ( gbyte ) 이다.:: 32 bit 운영체제는, 이러한 비트를 2^32 만큼 사용하는 운영체제이고, 64 bit는 이러한 비트는 2^64 만큼 사용한다.32 bit 운영체제는 메모리를 0부터 4,294,967,296 만큼 저장할수있고,64 bit 운영체제는 메모리를 0부..

Reversing/ETC 2019.04.15

[PlaidCTF] ropasaurusrex ( write-up )

문제의 이름대로 ROP 기법을 사용한다.이 문제를 풀기위해 우리가 알고있어야 할 기본지식은 다음과 같다. -PLT, GOT 개념에 대한 이해 -RTL 기법 ( RTL chaining 기법 알고있으면 따봉! )-read, write 함수 -메모리보호 기법 - NX bit ( DEP ), ASLR 등등.. 나의 개인적인 생각이지만, 우리가 스택에서 지금까지 한 공부는 ROP를 하기 위함이라고 생각한다.그럼, 도대체 ROP는 무엇일까?ROP란 Return Oriented Programming 이라는 의미이다. 나는 영알못이므로 해석해보면...반환 지향형 프로그램이라는 뜻이다. ROP는 NX bit, DEP 같은 어떻게 우회할수없는 메모리 보호기법이 걸려있을때 주로 사용한다.프로그램의 흐름을 제어하고, 가젯 (..

[C] 동적할당 보고서

[1] 동적할당 vs 정적할당 정적할당이란 프로그램이 시작되기전에 결정되는 메모리를 말한다.프로그램이 실행되는 도중에 크기가 변경될 수 없으며, 처음 결정된 크기보다 더 큰 입력이 들어오면 오버플로우가 일어나 다른 메모리의 주소가 변조될수있다. 처음 결정된 크기보다 더 작은 입력이 들어온다면, 남은 메모리는 낭비된다.프로그램이 종료되어야 메모리가 해제된다.이렇게 정적할당으로 결정된 메모리는 스택에 저장된다.https://sunrinjuntae.tistory.com/25스택과 힙이 무엇인지는 여기서!! 동적할당은 사용자가 프로그램의 실행도중에 메모리를 할당 받는것이다.필요한 만큼만 할당을 받고, 또 원할때 사용하고 반납할수있다. 메모리를 절대로 낭비하지 않을수있으며, 메모리를 매우 효율적으로 사용할수있다...

Layer 7/assignment 2019.04.12