본문 바로가기

해킹 공부/시스템 해킹4

[pwn] environ ptr 우선 주어진 문제는 위와 같았다. 위에 사진은 environ.c 코드, 밑에 사진은 컴파일 된 코드를 IDA로 디컴파일 한 결과다. stdin, stdout 버퍼를 initialize 하고, stdout의 주소를 출력한 다음 사용자가 원하는 Size를 입력하면, 해당 Size 만큼의 Data도 입력 받는다. 그리고 마지막으로 사용자가 원하는 주소로 점프 (jmp) 한다. 취약점은, read함수에 있다. buf 크기는 24 byte인데 사용자가 입력하는 Size 만큼 읽어들인다. stdout 포인터가 출력되면 stdout offset을 빼줌으로써 libc_base를 계산할 수 있다. 또한 libc_base에 environ offset을 더해서 environ 주소를 구할 수 있다. environ 주소에 sh.. 2021. 11. 3.
[rev,pwn] checkflag 보호되어 있는 글 입니다. 2021. 11. 3.
[시스템 해킹] One-shot gadget 함수 포인터를 덮어쓸 수 있다면 pc를 조작할 수 있지만 ROP와 같이 코드를 연계해 셸을 획득하는 건 불가능하다. 이러한 상황에서 사용할 수 있는 가젯이 원샷 가젯이다. 원샷 가젯이란 라이브러리 내에 존재하는 가젯으로, 리눅스 시스템에서 특정 조건 하에 pc를 바꾸는 것 만으로 셸을 실행시켜 주는 코드 가젯이다. 원샷 가젯은 libc.so.6 라이브러리 파일 내부에 존재하기 때문에 라이브러리가 매핑된 주소를 알 수 있다면 오프셋 계산을 통해 가젯의 주소를 찾을 수 있다. 오프셋 계산을 통해 라이브러리 베이스 주소를 계산해보자. 리눅스 환경마다 라이브러리의 stdout 오프셋이 다르며, 라이브러리 파일명이 다를 수 있다. 라이브러리의 stdout 오프셋을 알아냈다면 라이브러리 베이스 주소를 알아낼 수 있.. 2021. 2. 16.
[시스템 해킹] 윈도우에 리눅스 시스템 실습환경 만들기 (시스템 해킹 실습환경) 이번 포스트는 시스템 해킹 문제를 풀기 위한 실습환경을 어떻게 구성하는지에 관한 설명이다. 우선, 윈도우 업데이트를 해준다. WSL2를 사용하기 위해선 윈도우 10 버전 2004여야 한다. 윈도우 버전을 업데이트 해주려면 https://www.microsoft.com/ko-kr/software-download/windows10 에 가서 해준다. WSL2를 설치해준다. Window 기능 켜기/끄기->Linux 용 Windows 하위 시스템 켜기, 가상 머신 플랫폼 켜기를 선택하고 재부팅을 해준다. 그리고 cmd에 wsl --set-default-version 2를 입력한다. 만약 "WSL 2에 커널 구성 요소 업데이트가 필요합니다, 자세한 내용은 https://aka.ms/wsl2kernel을 참조하십시오.. 2021. 2. 16.