본문 바로가기

분류 전체보기

ASIS CTF Quals 2017 Reversing Flour It was written in Korean 문제들 중에 배점이 두 번째로 낮았는데 푼 사람이 제일 적고 가장 어려웠던 문제입니다ㅠㅠ파일을 받아보면 일반적인 PE나 ELF같은 포맷이 아닌 이렇게 알수 없는 형태로 파일이 구성되어 있습니다. 맨 첫줄을 구글에 검색해보니.hex라는 확장자를 가진 파일이며 아두이노 같은 avr 환경에서 쓰이는 바이너리임을 알았습니다. 다시 검색해보니 Intel HEX라는 포맷이었습니다. 다시 검색을 통해 objcopy를 이용해서 hex파일을 elf파일로 변환할 수 있다는 것을 알았습니다. (objcopy가 elf32-avr 타겟을 지원해야 합니다.)"objcopy -I ihex Flour_d550ed0eb751b1da2b2bdfeeb1fe60ae213e77e8.hex -O e.. 더보기
YISF 2016 본선 리버싱 문제 풀이 올해 8월 즈음에 열렸던 순천향대 정보보호 페스티벌 본선에 출제되었던 리버싱 문제를 대회 도중에 풀지 못하여 나중에 풀어야지 생각했다가 풀어서 풀이 올립니다.분야는 윈도우 드라이버 리버싱이며 정적분석과 windbg로 커널디버깅을 통해 직접 동적분석해서 풀었습니다.주어진 바이너리는 exe이며 내부 리소스에서 sys파일을 바이너리가 직접 추출해줍니다.507284b27c265f829adcdc56409200bd.sys라는 파일을 생성하고 서비스를 생성, 시작한 뒤 패스코드를 입력받고 DeviceIoControl로 전달하는 것처럼 보이나드라이버를 직접 보면 실제로는드라이버 자체에서 직접 입력을 받고 있습니다. 이 때는 아스키 코드가 아닌 스캔 코드가 반환되므로 문제를 풀 때 유의해야 합니다.exe를 보면 패스코드.. 더보기
2016 Whitehat Contest 예선 Write-Up 2016 Whitehat Contest 예선 NYAN언더바CAT Write-Up입니다. 더보기
2016 Layer7 CTF Write-UP 라업입니다. 닉네임은 "양파가 송송" 사용했습니다. 더보기
YISF 2016 예선 Write-Up Algorithm - 50, 100, 200 Crypto - 50 Forensic - 50 Misc - 50 Pwnable - 50, 100 Reversing - 50, 100 더보기
OS 동적 디버깅(vmware) vmware가상머신의 .vmx 파일을 텍스트 편집기로 열어서 하단에 debugStub.listen.guest32 = "TRUE"debugStub.hideBreakpoints = "TRUE"monitor.debugOnStartGuest32 = "TRUE"세 문장을 넣어줌 부팅하고 IDA에서 Attach -> Remote GDB Debugger -> localhost:8832 하고 0번에 있는거 선택 후 0x7c00에 브포 걸면 MBR 영역부터 디버깅 가능 더보기
how2heap fastbin_dup_into_stack 원본 소스 : https://github.com/shellphish/how2heap/blob/master/fastbin_dup_into_stack.c번역한 소스1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include int main(void) { printf("이 파일은 fastbin_dup_kr.c에서 확장되어 malloc의 리턴 주소를 컨트롤 된 주소(여기서는 스택 주소)로 리턴할 수 있도록 합니다.\n"); unsigned long long stack_var; printf("우리가 malloc()의 리턴으로 원하는 주소는 %p 입니다.\n", 8 + (char*)&stack.. 더보기
how2heap fastbin_dup 원본 소스 : https://github.com/shellphish/how2heap/blob/master/fastbin_dup.c번역한 소스123456789101112131415161718192021222324252627282930313233#include #include int main(void) { printf("이 파일은 fastbin에서의 간단한 double-free 공격을 보여줍니다.\n"); printf("먼저 세 개의 버퍼를 할당합니다.\n"); int* a = malloc(8); int* b = malloc(8); int* c = malloc(8); printf("첫 번째 malloc(8): %p\n", a); printf("두 번째 malloc(8): %p\n", b); printf("세.. 더보기
mysql 한글 깨질 때 vi /etc/mysql/my.cnf[client] default-character-set = utf8[mysqld] character-set-client-handshake=FALSE init_connect="SET collation_connection = utf8_general_ci" init_connect="SET NAMES utf8" character-set-server = utf8 collation-server = utf8_general_ci[mysqldump] default-character-set = utf8[mysql] default-character-set = utf8 추가하고, service mysql restart 하면 됨이렇게 하고 원래 있던 db 재생성 더보기
how2heap first_fit 원본 소스 : https://github.com/shellphish/how2heap/blob/master/first_fit.c번역한 소스 (영어 5등급이 무슨 번역...)12345678910111213141516171819202122232425262728293031323334353637#include #include #include int main(void) { printf("이 파일은 공격에 관한 입증을 하는 것이 아닌 glibc메모리 할당의 본질을 보여줍니다.\n"); printf("glibc는 free되어 있는 청크를 선택할 때 first-fit이라는 알고리즘을 사용합니다.\n"); printf("만약에 청크가 free되어 있고 그 크기가 충분하다면, malloc은 이 청크를 선택할 것입니다.\n".. 더보기