사진을 안 찍어둬서 사진이 없다.....ㅠㅠ 첫 번째 확인할 항목 우선 Docker가 설치된 호스트에서 ifconfig를 이용하여 정상적으로 인터넷이 연결되어 있는지 확인한다. 정상적으로 인터넷이 연결되어 있다면 172.17.0.1 ~172.17.255.254 사이의 ip 주소를 가지고 있을 것이다. 인터넷이 연결되어 있지 않다면 인터넷 주소가 할당되어 있지 않을 것이다. docker0 interface에 관련된 docker 네트워크에 대해 참고하면 좋은 글 : http://bluese05.tistory.com/15 첫 번째 항목의 해결방법 Docker의 Container의 문제가 아니라 Docker가 설치된 호스트 자체에서의 문제다. 이전에 VM의 Virtual Network 설정(DHCP 쪽)을 건든..
기본적인 방어기법이 모두 enable된 것을 확인할 수 있고, 64bit 바이너리이다. 해당 바이너리도 취약점은 어렵지 않게 찾을 수 있다. marimo 구조체의 heap 영역 주소를 저장하는 buffer의 길이는 BuyMarimo 함수에서 27번째 줄에 따라 15인 것을 확인할 수 있다. 하지만 여기서 단순히 15만 확인하고 있다는 것도 중요한 취약 포인트이다. show_marimo 함수에서 10번째 줄에 새로 할당한 marimo를 List에 넣고 Offset을 1 증가시키는데 Buy랑 달리 Offset을 체크하는 루틴이 전혀 존재하지 않는다. 따라서 Out-of-bound 취약점이 발생하고, 데이터 영역에서 이 취약점을 통해 Memory corruption이 가능하다. 공격 방법Out-of-bound..
checksec을 통해 확인해보면 Stack Canary가 풀려있는 것을 확인할 수 있고, 64bit 바이너리이다. 그 외의 값은 default 값이므로 중요하지 않다. 취약점은 매우 간단하다. 처음 입력 받는 함수에서 바로 stack buffer overflow 취약점이 존재한다. 따라서 여기서 Return Address를 덮는 것으로, 64bit ROP만 하면 끝난다. exploit 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#!/usr/bin/pythonfrom pwn import * def main(): elf = ELF("./B..
Reversing 분야의 문제이다. 사용자로부터 flag 값을 입력받는다. 바이너리에는 총 15개의 flag 검증 루틴이 존재하고, 사용자로부터 입력받아 검증된 flag가 SHA256으로 연산했을 때 특정 값과 동일해야 한다. 중간에 Anti-Reversing이 걸려있긴 한데, 바이너리 패치로 간단하게 우회할 수 있으므로 무시해도 되며, 중요한 부분은 func 함수와 SHA256 연산 후, strcmp 함수이다. func 함수의 루틴은 z3나 순수 리버싱으로 풀어도 되지만, 귀찮아서 angr를 사용하였다. angr 소스코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#!/usr/bin/pyt..
보호되어 있는 글입니다.
소스코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#!/usr/bin/pythonfrom subprocess import *from time import sleepimport re def crash_logging(ps, pid, cause, ip, sp, error, ptr): with open("./crash_log.txt", "a") as fh: fh.write("=============================================\n") fh.write("Process : {0}\n".format(ps)) fh.write("PID : {0}\n"...
python도 C 언어의 errno.h같은 모듈이 존재함 errno 리스트1234567891011121314151617181920212223import errno print errno.errorcode{1: 'EPERM', 2: 'ENOENT', 3: 'ESRCH', 4: 'EINTR', 5: 'EIO', 6: 'ENXIO', 7: 'E2BIG', 8: 'ENOEXEC', 9: 'EBADF', 10: 'ECHILD', 11: 'EAGAIN', 12: 'ENOMEM', 13: 'EACCES', 14: 'EFAULT', 15: 'ENOTBLK', 16: 'EBUSY', 17: 'EEXIST', 18: 'EXDEV', 19: 'ENODEV', 20: 'ENOTDIR', 21: 'EISDIR', 22: 'EIN..
원본 : https://googleprojectzero.blogspot.kr/2018/01/reading-privileged-memory-with-side.html 어려운 단어를 어렵게 작성하여서 너무 어렵다... 번역 개판과 오타는 나중에 수정해야지--------------------------------------------------------------------------------------------------------------------------------- CPU 데이터 캐시 타이밍으로 예측 오류 실행을 악용하여 임의의 가상 메모리로부터 취약점을 통해 정보를 누출하도록 유도할 수 있다는 사실을 발견할 수 있었다. 이 취약점은 Intel, AMD 및 ARM의 특정 프로세서를 포함하여 ..
자바스크립트 코드(Function Hooking)12345678910111213141516171819202122232425var handle = Module.findExportByName("msvcrt.dll", "memset");//var handle2 = Module.findExportByName("WS2_32.dll", "send");var baseAddr = Module.findBaseAddress("msvcrt.dll"); console.log(">> Hooking Function