분류 전체보기
-
BOB 면접 후기끄적끄적 2019. 6. 16. 13:18
그리도 꿈꾸던 비오비 신청이 모두 끝났다. 이제 남은건 기다리는 것 뿐이다. 합격의 여부는 불안불안하지만, 희망을 가져보려 한다. ^^ 다음으로 정리한 내용은 지극히 주관적임을 밝힌다. 1. 모르는 것은 모른다고 해야한다. 비오비를 준비하면서 제일 많이 들었던 말이었다.실제로 나한테도 그런 질문들이 들어왔다. '실행파일의 구조가 어떻게 되는지' 에 대한 물음에 PE 구조가 금방 떠올랐지만, 상세한 내용을 몰랐다. 갑작스러운 질문에 당황하기도 했고, PE 파일 구조의 세세한 내용을 모르기 때문에 '잘 모르겠습니다.' 라고 대답했다. 왜냐하면, PE 파일은 아는데, 구조를 모른다는 면에서 나의 열정이 줄어들어 보일까봐 그랬다. 아마, 이러한 고민은 BOB 를 준비하는 모든 학생의 고민일 것이다. '애매하게 ..
-
|Lord Of Bufferoverflow| #11 skeleton - golemWargame Site/BOF 2019. 6. 16. 11:49
자, 이 문제에서는 vampire > skeleton 에서 사용했던 방법은 통하지 않는다. memset 의 범위에 들어가기 때문이다. 결국, RET 만으로 overflow 를 이용해야한다. RET 하나만으로 어떻게 문제를 해결할 수 있을까? 우선 라이브러리에 접근하는 방법에 대한 이해가 필요했다. 오늘도 어김없이 구글링을 하다가 좋은 정리글을 발견했다. 출처 : https://jiafei427.wordpress.com/2016/11/15/ - 정적 라이브러리는 .a 로 끝나는 파일이며, 빌드 시에 실행 파일에 포함된다. - 공유 라이브러리는 .so 로 끝나는 파일이며, 여러 프로그램에서 공유된다. 디스크 공간이 절약되며 메모리 사용량 또한 절약된다. - 공유 라이브러리는 파일이 실행되는 시점에서 프로그램..
-
|Lord Of Bufferoverflow| #10 vampire - skeletonWargame Site/BOF 2019. 6. 10. 10:34
진짜 이 문제.... 나를 정말 힘들게 했다. gdb 를 돌려보다가 스택 마지막에 경로가 들어가는 것을 알 수 있었고, 이를 토대로 shell code 파일을 심볼릭 링크 파일 이름에 주입하는 형태의 풀이를 여러차례 시도했으나, 항상 이상한 에러가 발생했다. 지금부터 2 주일 동안 저질렀던 삽질을 공개한다. ㅜㅜ bash2 를 키고, 분석을 위해 skeleton 을 복사하여 skeletoa 라는 파일을 생성했다. 그 뒤, ln -s 를 통해서 /2F 가 없는 Shellcode 를 가지는 링크 파일을 만들어 주었다. 그래서 버퍼와 SFP 를 가득 채운 뒤, RET 를 \xbf * 4 로 해주었다. 왜냐하면 경로가 이미 스택에 들어가 있어 사실상 RET 만 바꿔주면 되기 때문이다. 자, bfbfbfbf 에서..
-
/bin/sh 을 실행하는 Shellcode 를 만들어보자Wargame Site/BOF 2019. 6. 7. 22:57
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 매번 /bin/sh 를 작동시키는 Shellcode 를 사용했지만, 긁어오기만 했지 직접 이 코드를 분석한 적이 없었다. 성격상... 파헤쳐봐야겠다. 끄적끄적의 내용을 토대로 진행해보았다. 1. execve( ) /bin/sh 을 코드내에서 실행하기 위해서 어떻게 해야할까? 이 때 사용되는 것이 execve ( ) 이다. 출처 : http://shell-storm.org/shellcode/files/syscalls.html 또한, /usr/include/asm/unistd_32.h 에서도 확인할 수 있다. 이제 'man exe..
-
Hello world 를 파헤쳐보자!끄적끄적 2019. 6. 6. 23:34
1. 시스템 호출 과정 출처 : https://slidesplayer.org/slide/15442845/ 우선 " int 0x80 " 에 대해 이해해보자. i) INT : x86 중앙 처리 장치를 위한 어셈블리어, 인터럽트를 발생시킴 ii) IDT 에서 0x80 위치에 있는 system_call( ) 을 발생시킴 인터럽트 디스크립터 테이블 (Interrupt Descriptor Table (IDT))은 인터럽트 벡터 테이블을 구현하기 위해 X86 아키텍처에서 사용되는 데이터 구조체이다. IDT는 프로세서가 인터럽트와 예외에 대한 정확한 반응을 결정하기 위해 사용된다. ( https://ko.wikipedia.org/wiki/ ) 2. System_call( ) 작동의 이해 출처 : http://shell..
-
여러분~~!!Wargame Site/SQL injection 2019. 5. 31. 15:32
https://ridibooks.com/search/?q=%ED%95%9C%EC%8A%B9%ED%98%91 RIDIBOOKS 최고의 eBook 서비스, 리디북스! 200만 권의 eBook, 특별반값 도서, 최신 베스트셀러에서 빌려보는 만화/판무/잡지, 내 문서파일 (PDF/TXT/ePub) 뷰어 기능까지! ridibooks.com 드디어 제 스스로 집필한 책이 나왔습니다 !! 106 페이지 분량이고요, 처음해보는 단독출판이라 미숙한 점이 있다면 피드백해주세요 ㅎㅎ 이 링크를 통해서 접근할 수 있습니다. 로그인만 하시면 공짜로 받을 수 있으니까 많은 다운 부탁드릴게요 ㅎㅎ 피드백은 언제나 환영입니다 !! ^^
-
|Lord Of Bufferoverflow| #9 troll - vampireWargame Site/BOF 2019. 5. 20. 16:20
RET 조작을 힘들게 하기 위한 방법인 듯 하다. 사실 이전 문제들에서 \x90 ( NOP ) 이라는 값을 넣게되면 쉽게 해결을 할 수 있었다. 하지만, 정확한 이해를 위해 이 방법을 최대한 지양했었는데, 이번에는 이 기능을 쓸수 밖에 없을 거 같다. ( 정확히하려면 또 안써도 되지만 ) /x90 은 NOP 이라는 아무런 동작이 없는 assembly 언어이다. 어셈블리어 계의 주석이라고 봐도 무관할 듯 싶다. 따라서 buffer + SFP + RET + \x90 * 1000000 + shellcode 의 구조를 가지고 있을 때, \x90 바이트가 있는 아무 곳이나 RET 로 설정했을 때 정상적으로 Shellcode 가 실행된다는 것이다. 그렇다면 이문제의 경우에 인자값을 완전 크게 만들어 주면 ff 를 ..