본문 바로가기

hacking & security7

LINE CTF - 2021 ( diveInternal, your-note ) challenge code: https://github.com/zbvs/ctf/tree/master/linectf-2020 - diveInternal - docker-compose.yml version: "2" services: nginx: build: context: ./nginx/ container_name: linectf_diveinternal_nginx restart: always image: linectf_diveinternal_nginx ports: - "12004:80" networks: - ctf-network public: build: context: ./public/ target: production container_name: linectf_diveinternal_public rest.. 2021. 3. 23.
Chrome V8 BigInt Type-Confusion Bug (* poc code of this bug : https://github.com/zbvs/opensource-research/tree/master/v8/speculative_bigint ) V8 엔진에서 JIT 버그를 찾게 되었다. BigInt 타입에 대한 Type-Confusion 버그였는데 안타깝게도 BigInt의 특성 때문에 OOB Read까지만 가능했고 이 버그만으로는 Exploit이 가능하지는 않았다. Chrome Fullchain Exploit을 해보자고 팀으로 준비중비였는데 언젠가 써먹을 날이 오겠지 하고 냅 두었다가 어느 순간 패치가 되어있었다. 묵혀뒀던 이 버그에 대해 이야기를 하려 한다. 버그의 PoC는 V8 8.0 버전 쯤에서 테스트했었는데 아마 V8 7.5 ~ 8.4 정도 버전까지 .. 2021. 1. 9.
Chrome V8 Garbage Collector and Write Barrier 자바스크립트 엔진은 오브젝트들에 대한 레퍼런스들을 추적하고 레퍼런스들이 없어지면 가비지 컬렉팅한다. 크롬 V8은 2개의 가비지 컬렉터가 있는데 하나는 Minor GC라 하며 전체 메모리 공간 중 Young Space라 불리는 메모리 공간이 부족할 때 활동하는 가비지 컬렉터이다. 따라서 상대적으로 빈번히 GC를 실행한다. 하나는 Major GC이며 가끔씩 Young Space 뿐만 아니라 Heap Space 전체를 통째로 가비지 컬렉팅할 때 동작한다. 이번 글은 주로 Minor GC에 대해 다룰 것이다. Minor GC는 Young Space라 불리는 지역을 관리하는데 Young Space는 새로 생성된 Object들이 존재하는 Heap Space이다. Minor GC는 이 Young Space를 다시 두.. 2021. 1. 8.
Chrome V8 Map and Map Transition Chrome 웹 브라우져의 V8은 Map이라는 내부 Object로 오브젝트의 구조 정보를 저장한다. 말하자면 V8에서는 Map이 곧 오브젝트의 class혹은 타입을 의미한다. 만약 두 오브젝트가 똑같은 프로퍼티를 가지고 있다면 같은 Map을 공유하고 다른 프로퍼티를 가지고 있다면 다른 Map을 가지게 된다. V8 Turbofan은 자바스크립트 코드를 컴파일 할때 타입 피드백을 이용해 컴파일하는데 예를 들어 아래 그림과 같이 my_obj라는 {a:int, b:int} 프로퍼티를 가진 오브젝트가 temp함수의 argument로 사용되었다면 V8은 그 Object의 Map을 피드백으로 저장한다. 피드백으로 저장된 Map정보는 나중에 JIT-Compiler가 컴파일을 진행할 때 타입정보로 이용한다. 자바스크립트.. 2021. 1. 8.
Jerryscirpt Code Execution Vulnerability 자바스크립트 엔진을 대략적으로 공부하고 싶어서 동기를 부여할 겸 조금 취약하다고 할 수 있는 Jerryscript를 타겟으로 겸사겸사 분석을 진행한적이 있다. 여차저차 처음으로 오픈소스 소프트웨어에서 취약점을 발견하게 되었고 공부도 많이 되었었다. 취약점을 찾긴 했지만 웹 브라우저에서 사용되는건 아니어서 크게 영향력이 있을것 같진 않았고 그래서 그냥 Jerryscript Git 페이지에 제보를 해줬다. github.com/jerryscript-project/jerryscript/issues/2146 misuse of type in ecma_gc_mark_property function which can lead to memory corruption · Issue #2146 · jerryscript-pro.. 2021. 1. 7.
Game and Messenger Hooking 예전에 (5년 전) 카톡-롤 후킹하기를 주제로 학교 졸작에 제출한 프로젝트에 대한 포스팅이다. 5년전이면 꽤나 오래전 일이기 때문에 여기서 설명한 카톡,LOL에 대한 정보는 현재와는 다를 수 있다. 당시 주제는 LOL과 카톡을 둘 다 후킹한 뒤 LOL에서 보내는 메세지를 강제로 카톡으로 전송하는 모듈이었다. 카톡은 Themida 패킹 때문에 암호화, 복호화 루틴을 리버싱하면서 원하는 메세지를 찾는 과정이 꽤나 힘들었던 기억이 난다. 듣기로는 현재는 Themida가 Anti debugging과 DLL Injection 방어가 강력해져서 이때 당시 방법으로는 지금의 카톡을 후킹하기가 힘들 거라는 이야기를 들은 적이 있다. 함수를 찾는 과정이 힘들었는데 처음에는 큰 프로그램을 소스코드 없이 리버싱 한적이 없어.. 2021. 1. 7.
pbctf 2020 - sploosh writeup 문제에 제공된 docker-compose 파일을 확인해보니 splash 와 php 서버로 이루어진 시스템이였다. version: "3.8" services: webapp: build: . env_file: - ./flag.env networks: sploosh_internal: ipv4_address: 172.16.0.14 ports: - 9000:80 volumes: - ./src:/var/www/html/:ro splash: image: scrapinghub/splash ports: - 8050:8050 networks: sploosh_internal: ipv4_address: 172.16.0.13 networks: sploosh_internal: ipam: driver: default config:.. 2020. 12. 17.