Wargame Site
-
|Lord Of Bufferoverflow| #13 darkknight - bugbearWargame Site/BOF 2019. 6. 21. 13:00
RET 에 제한을 두는 문제이다. 앞서 풀어본 문제는 함수를 호출하고 바로 leave 와 ret 가 뒤에 있기 때문에 조작하기 쉬웠던 것이었다. 하지만, 이 문제에서는 앞의 문제의 구조와는 다르다. 하지만, ret 를 leave 로 향하게 해준다면, SFP 조작으로 System(/bin/sh) 실행이 가능할 것이다 우선 프로그램 내에서 leave 와 ret 의 위치를 파악하기 위해 objdump 를 사용했다. 실습에서 사용할 leave 는 저 녀석이다. 0x0804830d (leave) 이로써 앞의 문제와 같은 문제가 되도록 할 수 있다. [ System 의 주소 ] + AAAA (EBP 역할) + [ /bin/sh 의 주소 ] + ..... + [ Buffer 시작 - 4 ] + [ leave 의 주소..
-
|Lord Of Bufferoverflow| #12 golem - darkknightWargame Site/BOF 2019. 6. 17. 12:25
문제를 천천히 분석해보면, 41 개 즉, 1Byte Overflow 를 활용해서 문제를 해결해야한다. 1 Byte 의 역할은 SFP 의 첫 바이트를 의미한다. 예상대로 다음과 같이 ebp 의 값에 41이 들어간 것을 확인할 수 있다. 그리고 이 화면은 disas main 에서 problem_child 가 실행되고 난 직후의 모습이다. esp 를 증가 시킨 뒤, 바로 leave 가 있는 것을 볼 수 있는데, 이것은 우리에게 어떤 의미를 가질까 leave 는 mov esp, ebp 즉, esp 의 값을 ebp 의 값으로 바꾸는 과정이다. ret 는 esp 의 값을 eip 로 설정하는 코드이다. 그리고 ebp 는 우리가 조정해 줄 수 있는 상태이다. 그렇다면!! SFP 를 통해서 EIP 까지 조정할 수 있는 ..
-
|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..
-
여러분~~!!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 를 ..