목록전체 글 (67)
R4mbb

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 ..

맨 아래 부분에서 argv[] 를 모두 초기화 시켜버린다... 일단 gdb로 보면서 포인트를 찾아보자. 메모리 끝자락으로 가니 실행파일의 절대경로가 저장되어있다. 프로그램 코드상에서 argv를 지워도 메모리에는 남는 모양이다. 공격벡터로 써먹자. 먼저, 파일이름에 쉘코드를 박고 불러와서 쉘을 따는 순서로 하면 될 것 같다. 쉘코드에 \x2f가 없어야한다. \xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81 이 친구를..
ASLR (Address Space Layout Randomization) : 라이브러리, 힙, 스택 영역 등의 주소를 바이너리가 실행될 때마다 랜덤하게 바꿔 RTL과 같이 정해진 주소를 이용한 공격을 막기 위한 보호 기법이다. /proc/sys/kernel/randomize_va_space 의 파일의 값을 바꿔주면 된다. 0 : ASLR 적용해제 1 : 스택, 힙 메모리를 랜덤화 2 : 스택, 힙, 라이브러리 메모리를 랜덤화 -> 바이너리 코드 영역의 주소는 변하지 않기 때문에 ASLR 보고 기법을 우회하여 익스를 할 수 있다. --- 계속 할수도

이전 문제까지는 0xbfff 로 시작되는 주소를 넣었었지만 이번 문제에서는 주소의 시작이 0xbf가 되어야 하고, 그 다음 0xff가 되면 안된다. 그렇다면, 0xbffeffff 보다 아래 주소로 매핑하면 될 것 같다. 먼저, 주소값 계산을 해보자. 0xbfffffff - 0xbffeffff = 0x10000 ( 65536 ) 이렇게 NOP을 주고 스택을 매핑하면 스택(ebp)은 0xbffeffff 보다 낮은 주소부터 매핑이 된다. 익스를 해보자. NOP이 많이 들어갔기 때문에 적당한 곳을 RET 박아주면 쉘이 따이게 된다.

이전 문제랑 다른 점은 인자 갯수가 2개여야하고, memset함수를 두번 써줬다. argv[1]도 초기와 된다.. ㅂㄷㅂㄷ 아마 파일이름에 쉘코드를 넣고 argv[0] 를 ret에 넣어야될 것 같다. 그러려면 쉘코드에 2f가 들어가면 안된다. "/" 로 인식이 되기 때문에 오류가 발생하기 때문이다. 쉘코드는 \xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81 이걸 사용했다. 파일이름을 바꾸고 익스를 해보자. argv..