본문 바로가기

전체 글345

LOB - darkknight(RTL) RTL인 것 같습니다만... cp bugbear tmp gdb tmp b*main r AAAA p system ☞ system 함수의 주소를 찾는다. ☞ 0x40058ae0 이와 같이 코드를 짜서 system 함수에 존재하는 /bin/sh 문자열의 주소를 구한다. 스택 구조는 buffer[40] ---------------------- sfp ---------------------- ret ☞ system 함수 주소 ---------------------- argc ---------------------- argv ☞ /bin/sh 문자열 주소 이므로 2021. 8. 5.
LOB - golem(SFP overflow) 처음으로 다른 함수를 호출하는 구성 방식이당 strncpy로 막아둔 것 같은데 buffer가 40인데 41은 모지..?? test 해봤다. test.c 이제 인자를 A 40개 줬을 때와, A 40개 + B 1개 줬을 때를 비교할 것이다. >> 결과 41개를 입력하면 뒤에 쓰레기값이 온다.. 뭘까... 암튼 41개까지 입력할 수 있으므로 problem_child의 sfp의 마지막 값을 조정할 수 있겠군 이런 공격 기법을 SFP overflow라고 한다 [ 참고 : https://d4m0n.tistory.com/76 ] 어셈 까보면 ------------------- buffer 주소 ☞ problem_child ------------------- buffer[40] ☞ problem_child ------.. 2021. 8. 4.
LOB - skeleton 스택이 싹 지워진다. 그래서 RTL인가? 했는데 argv[1][47] == "\xbf" 여야한다는 조건 덕분에 RTL으로 해결할 수 없는 것 같다. 결국 롸업을 슬쩍 봤다. LD_PRELOAD를 이용한다고 했다. 그래서 LD_PRELOAD 구글링 해서 memset 함수를 후킹해서 아예 bash 쉘을 띄우게 하려고 했는데 안됐다... 이유는 setuid가 걸려있기 때문이다! setuid가 걸려있으면 LD_PRELOAD=./~~.so ./실행파일 argv 를 해도 후킹되지 않는다. ☞ 직접 경험해보는 것이 좋다. ld_preload를 이용해서 파일을 실행할 때 core dump 파일이 만들어지도록 시도해서 core dump파일을 분석했다. hook.c ☞ (NAME = )"A"*250+".so" // so .. 2021. 8. 3.
LOB - vampire(심볼릭링크) argv[1] 길이는 48까지.. 딱 ret까지 덮을 수 있넹 buffer, env 지워버리기.. argv도 지워버리기.... 내가 기억하기론 0xc0000000에 가장 가까운 곳에 argv가 생기는 걸로 아는데, 여기 말고도 처음 main 함수 들어가기 직전에 파일 이름이 한 번 더 스택에 올라간다고 알고 있다. 정확히 vampire.c의 마지막 부분인 //ultra argv hunter! 이 부분이 어느 부분( or )을 지우는 지 알아봤다. 위와 같은 코드의 test.c를 만들었다. gcc -o test test.c 로 컴파일하고, gdb test를 통해 값을 확인했다. 이를 통해 문제에서 지우는 argv 값은 main 함수 시작하기 전에 들어가는 파일이름을 지워버린다는 것을 알 수 있다. 그렇다면.. 2021. 8. 1.
ubuntu18.04에서 kvm image 만들기 알아볼 개념 kvm, hyper visor 가상화 지원 확인 - (1) grep -cw vmx /proc/cpuinfo 결과 : 0 → 가상화를 지원하지 않는 cpu이다. 이런 환경에서는 KVM이 동작하지 않으며 QEMU에 의한 에뮬레이션만 제공된다. 가상화 지원 확인 - (2) lscpu | grep vmx flags에 vmx(intel) 이나 svm(amd)이 없다면 BIOS에서 가상화 기술을 설정해줘야 한다. VMWare에서 만든 VM에 KVM, HyperV 등의 가상화 엔진 설치를 위한 설정 VMWare에서 만든 VM에 KVM, HyperV 등의 가상화 엔진 설치를 위한 설정 VMWare에서 만든 VM OS에 KVM이나 HyperV 같은 가상화 엔진을 설치하려 할 경우 CPU가 가상화를 지원하지 .. 2021. 8. 1.
LOB - troll (환경변수) ret할 주소가 지금까지 0xbfff**** 였던 것으로 기억하는데, bf(O) ff(X) __ __ 로 ret 해야 한다... 한참을 헤맸는데, 결국은 "환경변수" 였다. (*) 내가 헤맨 이유는 cat /proc/self/maps 로 확인되는 스택 주소보다 낮은 주소는 스택이 쌓일 수 없다고 생각한 점. 그래서 힙으로 풀어야 하는 것 아닌가 착각했던 점.. (***) 하지만 저 범위는 처음에 할당받는 영역이 저만큼이라는 것이고, 파일이 실행되며 cat /proc/self/maps에서 확인되는 스택 주소보다 더 낮은 범위까지 접근할 수 있다. 그렇다면, export X=$(python -c 'print "\x90"*0x10000 + "쉘코드(나의 경우 25bytes)"') ☞ 환경변수 등록 0x1000.. 2021. 8. 1.