본문 바로가기

전체 글

(56)
Relative Path Overwrite 브라우저와 서버의 path 해석을 다르게 하여 임의의 파일을 브라우저에 로드하게 하는 공격 방식입니다. 예를들어 다음과 같은 URL이 있다고 생각해봅시다. http://www.test.com/path/to/script.js 이제 이 URL을 다음과 같이 바꾸어 브라우저에 입력했다고 생각합시다. 일반적인 상식에 따르면 해당 페이지는 404에러가 뜰 것입니다. /을 %2f으로 url encoding했기 때문입니다. http://www.test.com/path%2fto%2fscript.js 하지만 몇몇 사이트에서는 위와 같이 /을 %2f로 바꾸어도 script.js 파일에 정상적으로 접근이 가능합니다. 서버가 path를 해석하는 과정에서 %2f를 /으로 변환하여 해석하기 때문입니다. 이는 여러가지 원인이 있을..
사이버작전경연대회 2020 / vaccinesimulator 대회가 종료되기 40분전에 풀이를 떠올리고 대회가 끝난 20분 뒤에 쉘을 딴 문제입니다. Heap에서 삽질을 조금만 덜 했으면 시간내에 풀었을 텐데 아쉽습니다. keyword : LD_PRELOAD manager 파일과 simulator파일이 주워집니다. manager 파일에는 canary가 적용되어 있지 않습니다. ➜ vachine checksec manager [*] '/home/jjy/lab/whitehat/vachine/manager' Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled ➜ vachine checksec simulator [*] '/home/jjy/lab/white..
Incognito CTF 2020 Incognito CTF 2020에 개인으로 참가하여 3등을 하였습니다. 윈도우 리버싱과 포렌식 문제 하나를 못 풀었습니다. 중간에 딴 짓 안 하고 열심히 했으면 둘 다 풀만했을 것 같은데 아쉽네요. 1등이 진작에 올클하고 떠나버리셔서 제가 다 풀었어도 2등이긴 했습니다 ㅋ 주최측에 제출하기 위해 작성한 간단한 라이트업을 공유합니다. Yaaong 고양이 사진을 보여주는 어플이 주어집니다. dex2jar, apktools를 사용하여 어플을 디컴파일할 수 있습니다. 어플 내에 Text Box가 있는데 사용자가 그 Text Box에 Flag의 전반부를 입력하면 어플이 Flag의 후반부를 출력합니다. resources\lib\x86_64\libProb.so에 존재하는 Java_com_charlie_rev_Mai..
Chrome v8 / CVE-2019-5791 취약점 요약 AST 단계와 Bytecode-generator 단계에서는 각각 Dead-code Elimination을 수행합니다. CVE-2019-5791는 AST 단계와 Bytecode-generator 단계에서 Dead-code Elimination을 수행하는 방식이 달라서 발생한 취약점입니다. AST에서보다 Bytecode-generator에서 Dead-code를 판단하는 기준이 엄격합니다. 따라서 Bytecode-generator에서는 dead-code라고 판단하지 않은 코드를 AST에서는 dead-code라고 판단하는 경우가 발생합니다. 이는 AST와 Bytecode-generator에서 사용하는 Literal_array의 idx값이 달라지게 되고, Type Confusion이 발생하게 됩니다...
pwnable.kr / crcgen 보호되어 있는 글입니다.
ASIS CTF 2020 / shared_house 나중에 블로그에 글 옮기는 걸로...
Structure for Kernel heap exploit https://ptr-yudai.hatenablog.com/entry/2020/03/16/165628 https://duasynt.com/blog/linux-kernel-heap-spray
ASIS CTF 2020 / tthttpd #Find bug It is a simple HTTP server written in C language. There are two simple vulnerabilities. 1. Stack overflow Length is not verified when receiving input from the client. Therefore, Stack overflow occurs. int __fastcall readline(_BYTE *buf) { int result; // eax _BYTE *i; // [rsp+18h] [rbp-8h] for ( i = buf; ; ++i ) { result = fgetc(stdin); if ( (_BYTE)result == -1 ) break; if ( (_BYTE)resu..