전체 글 156

[pwnable.tw] babystack ( write-up )

pwnable.tw babystack ( 250pts )Mitigation[*] '/home/juntae/wargame/pwnable.tw/babystack/babystack' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled FORTIFY: Enabled매우 빡치게 미티게이션이 다걸려있습니다.여기서 카나리는 __stack_check_fail함수를 사용하기때문에 걸려있습니다.checksec에서는 해당 함수를 사용하면 카나리가 있다고 판단하나봐요. Analysismain()__int64 __fastcall main(__int64 a1, char **a2, char **a3) { _QWORD *..

[Hardware] UART 통신과 물리적 연결

Let's study UART!UART 란?UART : Universal asynchronous receiver/transmitter(범용 비동기 송수신기)UART는 병렬형태로 들어온 데이터를 직렬형태로 전환하여 데이터를 전달하는 하드웨어이다.직렬(Serial) 통신 프로토콜이다.데이터 송신/수신 시 각각 하나의 LINE만 이용한다.하드웨어 통신 규약의 한 종류이다.프로토콜 구현이 매우 간단하다.우리에게는 시리얼 통신(Serial communication) 으로 더 잘 알려져있다.일단 UART 관련 프로그램인 putty,Xshell등을 구하기 쉬워서 접근이 간편하다는게 특징이다.또한, USB-to_Serial같은 장비들도 구하기 쉽다는게 특징이다.해커의 입장에서는 커널, OS의 각종 메시지나 디버그 메시..

Reversing/ETC 2019.09.29

[C] mmap함수

mmap() 함수헷갈려서 정리해본다.#include ​ void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);return : 매핑이 시작하는 실제 메모리 주소, 실패할 경우 -1parametervoid *addr : 매핑을 시작할 주소size_t len : 매핑시킬 메모리 길이int prot : 매핑시킨 메모리에 적용시킬 메모리 보호정책rwx 권한을 설정해서 줄 수 있다.int fd : 이 fd를 기준으로 mmap()한다.off_t offset : 매핑할 때 size_t len의 시작점을 지정함int prot인자는 아래와 같당.#define PROT_READ 0x04 /* pages can be read */ #defi..

ETC 2019.09.29

[Web] server-client간의 CGI 통신

Web Server와 Client 사이의 통신사용자는 웹 브라우저를 통해 보고자 하는 정보가 있는 서버에 접근해서 정보를 가져온다.브라우저와 서버 간에 정보를 주고받기 위한 특별한 규정 (Protocol)이 필요하다.웹에서는 주로 HTTP(Hyper Text Transmission Protocol)프로토콜을 사용한다.클라이언트에 해당하는 브라우저는 서버에 HTML(Hyper Text Mark-up Language)를 전송해 줄 것을 Request하고, 서버는 클라이언트의 요청에 따라 해당 문서를 Response한 후 접속을 중단하여 클라이언트와 서버간의 통신이 이루어진다.HTTP는 정보를 8bit의 문자열로 전송하며, 이를 이용해 다양한 형태의 정보 전송이 가능하다.이때, 클라이언트가 해당 서버를 찾아갈..

ETC 2019.09.26

[ARM] ARM asm & instruction / ARM exploitation

Let's study ARM exploitation!RegisterR0 ~ R12 : 범용 레지스터, 인자값 및 임시 계산소 등이 들어감x86의 eax,ebx,ecx... 등과 비슷한 역할을 함R13(SP) : Stack Pointerx86의 esp와 비슷한 역할을 함R14(LR) : Link Register, 함수 호출 전 LR에 리턴 주소를 넣어둠.x86에서는 call할때 함수 호출 전 리턴주소를 stack에다가 넣어두지만, ARM에서는 LR에 넣어두어 함수를 call할때 스택을 사용하지않는다.R15(PC) : 다음 실행할 코드의 주소를 저장한다.x86의 eip와 같은 역할 AssemblyB : Branch B명령어 뒤에 지정된 상수값에 해당하는 주소로 분기하는 명령이다.x86의 jmp와 매우 유사하..

Reversing/Assembly 2019.09.26

[pwnable.tw] seethefile ( write-up )

Pwnable.tw seethefile ( 250 pts )Summary/proc/self/mapsFSOPFake IO_file Analysismain에서는 open / read / write / close / exit 총 5개의 기능을 한다. openfile()int openfile() { int result; // eax ​ if ( fp ) { puts("You need to close the file first"); result = 0; } else { memset(magicbuf, 0, 0x190u); printf("What do you want to see :"); __isoc99_scanf("%63s", filename); if ( strstr(filename, "flag") ) { puts..

[Timisoara CTF] Timisoara CTF Quals ( write-up )

Crypto - solved by team comflexBaby Crypto ( 50 pts )In the name of the problem, I thought it was a Caesar cipher.So I use Caesar decoder site. ( https://cryptii.com/ )Shift by 8 to get the flag.Otil bw amm gwc uilm qb! Emtkwum bw bpm ewvlmznct ewztl wn kzgxbwozixpg! Pmzm qa gwcz zmeizl: BQUKBN{Rctqca_Kimaiz_e0ctl_j3_xzwcl} ​ => Glad to see you made it! Welcome to the wonderful world of cryptogr..