목록메모용 (7)
R4mbb

sudo apt install gcc ruby-dev && sudo gem install seccomp-tools

Ubuntu 20 ~ 22 ** 주의사항우분투 설치 시에 깔리는 기본 python3를 삭제하고 apt autoremove를 하면 이상한 종속성 lib 까지 삭제 될 수 있으니 주의. ** 설치sudo add-apt-repository ppa:deadsnakes/ppa -ysudo apt update# python 3.10sudo apt install python3.10 python3.10-venv python3.10-dev -y# python 3.11sudo apt install python3.11 python3.11-venv python3.11-dev -y# python 3.12sudo apt install python3.12 python3.12-venv python3.12-dev -y# 이후 설치된..
ubuntu 기준 apt 설치로 구버전이 설치 됨. ** gdb 설치하기 전에 python 버전을 올리는게 좋음.python 구버전으로 빌드하게 될 경우에 gdb가 구버전 python만 찾게 됨.아래 글에서 파이썬 수정 후 빌드하길 바람.https://r4mbb.tistory.com/50 python 버전 설치&변경Ubuntu 20 ~ 22 sudo add-apt-repository ppa:deadsnakes/ppa -ysudo apt update# python 3.10sudo apt install python3.10 python3.10-venv python3.10-dev -y# python 3.11sudo apt install python3.11 python3.11-venv python3.11-dev ..
ASLR (Address Space Layout Randomization) : 라이브러리, 힙, 스택 영역 등의 주소를 바이너리가 실행될 때마다 랜덤하게 바꿔 RTL과 같이 정해진 주소를 이용한 공격을 막기 위한 보호 기법이다. /proc/sys/kernel/randomize_va_space 의 파일의 값을 바꿔주면 된다. 0 : ASLR 적용해제 1 : 스택, 힙 메모리를 랜덤화 2 : 스택, 힙, 라이브러리 메모리를 랜덤화 -> 바이너리 코드 영역의 주소는 변하지 않기 때문에 ASLR 보고 기법을 우회하여 익스를 할 수 있다. --- 계속 할수도
1. NX-Bit ( NX bit, Never eXecute bit, 실행 방지 비트 ) - 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. - NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용되며, 프로세스 명령어가 그 곳에 상주하지 않음 으로써 실행되지 않도록 만들어 준다. > 인텔 : XD-bit (eXecute Disable) = NX-bit 2. DEP (Data Execution Prevention) - 마이크로소프트 윈도우 운영체제에 포한된 보안기능이고, 악의적인 코드가 실행되는 것을 방지하기 위해 메모리를 추가로 확인하는 하드웨어 및 소프트웨어 기술이다. - DEP의 두 가지 모드 > 하드웨어 DEP : 메모리에 명시적으로..

FSB 공부를 하며 FSB에 관한 문제를 더 풀어보고 정리하고 싶어서 메모에다가 남긴다. 먼저, 파일을 다운받고 IDA로 열어서 코드를 확인해보자. main함수에 printf(&buf) 부분에서 FSB 취약점이 터지는걸 확인할 수 있다. 함수를 살펴보면, hide라고 아주 수상하게 생긴 함수가 존재한다. hide 함수를 이용해서 해결하면 될 것 같다. 우분투에서 한번 실행해보자. 처음 입력한 AAAA가 포맷 스트링을 입력한 후로 4번째에 hex 값으로 출력이 되었다. 그렇다면, 순서는 이렇다. 1. read 함수로 입력을 받을 때 앞 부분에 exit 함수의 GOT 주소를 넣어준다. 2. %hn (%n)을 활용해서 처음에 넣은 exit_GOT 주소위치에 hide 함수의 주소를 넣도록 조작한다. ※ %hn은..
자료는 블랙펄시큐리티 블로그의 내용을 참고해서 메모했다. https://bpsecblog.wordpress.com/2016/03/07/about_got_plt_1/ PLT (Procedure Linkage Table) : 외부 프로시저를 연결해주는 테이블이다. PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다. GOT (Global Offset Table) : PLT가 참조하는 테이블이다. 프로시저들의 주소가 들어있다. 기본적으로 함수를 호출하면(PLT를 호출) GOT로 점프하는데 GOT에는 함수의 실제 주소가 쓰여있다.첫 번째 호출이라면 GOT는 함수의 주소를 가지고 있지 않고, '어떤 과정'을 거쳐 주소를 알아낸다. 두 번째 호출 부터는 첫 번째 호출 때 '어떤 과정'으로 알아낸..