목록System (72)
y0u_bat
Melongarm계열의 간단한 스택오버플로우 문제입니다.Mitigationihaechan@ubuntu:~$ ./Desktop/pwnable/checksec.sh --file ./melong RELRO STACK CANARY NX PIE RPATH RUNPATH FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH ./melong ihaechan@ubuntu:~$ ASLR이 꺼져 있음Vulnerability_DWORD *__fastcall write_diary(_DWORD *result, void *a2) { void *buf; // [sp+0h] [bp-14h] unsigned __int8 nbytes; // [sp+Fh] [b..
최근에 webkit에 대해 관심있어서 공부 하고 있습니다. 원문보고 전부 번역한건 아닙니다. (발번역...) 중간중간 제가 공부하면서 작성한 내용이 있습니다. 공부하면서 작성하는거라 틀린 내용이 있을수있습니다. - http://phrack.org/papers/attacking_javascript_engines.html (원문)- http://cd80.tistory.com/104 (104, 106, 107) Javascript engine overvlew자바스크립트 엔진에서는 대체로하나 이상의 컴파일러 인프라를 포함하는 JIT 컴파일러 입니다.자바스크립트는 VM에서 작동한다.런타임에서 객체나 함수를 제공합니다. NaN-boxingJSC에서는값을 Pointer Double, Interger 3개로 나눠 저장..
발표자료입니당
[DEFCON 2017] mute샌드박스문제이다. 샌드박스 때문에, write를 syscall 못할때, cmp를 이용해서 time-base로 blind로 플래그를 뽑아내는 문제이다. MitigationNX만 걸려있고, 나머지는 안걸려있다. VulnerabilityMain 함수이다. buf에 4096크기만큼 rwx권한으로 메모리 맵핑해준다.그리고 read로 buf에 4096 크기만큼 입력받는다. 그다음에 buf에 담긴 내용을 실행한다.이문제는 샌드박스 관련 문제이다. dropSyscalls() 함수를 한번 보자. 샌드박스가 돌아가고 있고, Rule에 syscall 0x0,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0xa,0xb,0xc,0x3b만 호출 될수있도록 추가 되어 있다. 해당 syscall은..
[DEFCON 2017] SmashmeDEFCON 2017 예선전에서 제일 쉬운 문제다.간단한 bof 문제이고, 조건 하나만 맞춰 주면 된다. MitigationVulnerability gets로 입력을 받아서 stack buffer overflow가 일어난다. 여기서 조건 하나를 맞쳐줘야 된다.입력한 변수에 "Smash me outside, how bout dAAAAAAAAAAA" 가 포함되어 있어야된다. sub_400320 함수가 strstr 함수이다. main 함수에서 ret instruction이 실행되기전에 레지스터를 보면, rdi가 입력받은 변수의 시작점인것을 알수있다.그래서 jmp rdi 가젯이 있나 가젯을 검색해보았다. 0x00000000004c4e1b : jmp rdi바이너리에서 이러한 ..
[DEFCON 2017] beatmethedl심심해서 간만에 CTF 참여해서 풀어봤다.unlink를 해서 푸는 heap문제다. 오랜만에 CTF 해서 그런지 재미있게 했다. MitigationLogin로그인검사를 하는데, 바이너리내에 있는 문자열을 strcmp으로 비교한다. ID를 mcfly로, PW를 awesnap로 해주면 로그인이 된다. Memu 바이너리의 메뉴이다. 일반적인 Heap 문제처럼 추가,출력,삭제,수정 기능을 가지고 있는 전형적인 Heap 문제이다. 해당 바이너리내에 malloc함수와 free함수가 구현되어 있다. if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) 구현된 함수에 이루틴이 없어서 unsafe_unlink가 아닌 unlink를 통..
macOS Kernel Debugging Guide이문서에서는 10.10.5 OS X에서 lldb를 이용하여 커널 디버깅하는 기초적인 내용에 대해서 다룹니다.우선 맥 커널 디버깅을 하기 위해서는 Kernel 버전이 동일한 macOS 가상머신이 두개 있어야합니다. Kernel Debug Kit 설치커널 버전에 맞는 KDK 를 두 가상머신에 전부다 깔아줍니다.설치하고 나면, /Library/Developer/KDKs/*.kdk/System/Kernels/kernel.development 가 있을텐데, 이것을 /System/Library/Kernels/ 에 복사해줍니다. 복사해주면 부팅할때 development kernel로 부팅 할 수 있습니다.sudo cp /Library/Developer/KDKs/KDK..
macOS App to ISO file Convert "Install OS X Yosemite.app" 와 페럴러즈를 설치한다. #!/bin/bash # Mount the installer image hdiutil attach /Applications/Install\ OS\ X\ Yosemite.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app # Convert the boot image to a sparse bundle hdiutil convert /Volumes/install_app/BaseSystem.dmg -format UDSP -o /tmp/Yosemite # Increase ..
CVE-2016-1758 macOS kernel information leakCVE-2016-1758는 10.11.4에서 패치 되었습니다. 간략하게 취약점에 대해 설명하면, if_clone_list라는 함수에서 초기화 되지 않은 커널 스택의 8바이트를 user space에 복사하게 되어 kernel pointer를 leak 할 수 있습니다.leak한 kernel pointer에서 base address를 빼서 kernel slide를 계산 할 수 있습니다. if_clone_listif_clone_list 함수의 소스코드입니다. static int if_clone_list(int count, int *ret_total, user_addr_t dst){ char outbuf[IFNAMSIZ]; struct ..
보호되어 있는 글입니다.