본문 바로가기

Security study/Pwnable

(10)
[dreamhack] basic_rop_x86 문제 풀이 보호되어 있는 글입니다.
ropasaurusrex 문제 풀이 보호되어 있는 글입니다.
[pwnable.kr] bof 파일을 다운 받았다. 1.a를 충분히 많이 넣어주었을 때 중지된다. 2.a를 적당히 조금 넣어주었을 때 Nah..이라는 문자열이 나온다. cat으로 코드를 살펴보자. main 함수에서 func함수 인자로 '0xdeadbeef' 를 넣어준다. func 함수를 살펴보면 char overflowme[32]를 선언한다. "overflowme : "를 출력한다. gets로 overflowme 를 받아준다. if문으로 key값이 '0xcafebabe' 인지 비교한다. 같을 때 /bin/sh 쉘을 실행하고 다르면 "Nah..\n"를 출력한다. gdb로 main 디스어셈블하기 gdb로 func 디스어셈블하기 func에 call이 4번 나오고 있다. 아까 c코드에서 봤을 때 printf(), gets(), system(..
gdb 활용 코드 분석 (1) 분석할 코드 코드를 짧게 설명해보면 function에서는 buffer1이 15크기를 가지고 buffer2가 10크기를 가지게 만들어주고 있고, 메인에서는 function에 매개변수로 1, 2, 3을 넣어주고 있다. (2) 분석 내용 gcc로 32비트 컴파일 해주고 gdb를 실행시켰다. [기타 배경지식] 어셈블리어 sub에 esp가 인자로 오면 공간을 확보해주는 것이고, add에 esp가 인자로 오면 공간을 반환해주는 것이다. 프롤로그와 에필로그가 있는데, 프롤로그는 push ebp, move ebp,esp 이고, 에필로그는 leave, ret 이다. function을 디스어셈블해줬더니 위와 같이 나왔다. 위에 2줄이 프롤로그 부분이고, 코드 부분 맨 밑 2줄이 에필로그인 걸 알수 있다. 프롤로그 ..
GDB 사용방법 [1] GDB란? -> GNU Debugger의 약자로 오픈소스로 공개되어 있는 무료 디버거이다. -> 설치 방법은 sudo apt-get install gdb 입력 *gdb-peda를 이용하면 더 편리하게 볼 수 있다. 설치방법은 git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit 위 2줄을 입력하는 것이다. [2] 명령어 -> b *[메모리 주소/함수이름/offset] : breakpoint를 거는 명령어 -> continue : 다음 breakpoint까지 실행하는 명령어 -> info b : breakpoint 정보를 확인하는 명령어 -> d (brdakpoint 번호) : bre..
[pwnable.kr] collision 문제 풀이 ssh col@pwnable.kr -p2222 (pw:guest) 로 우분투에서 접속했다. 그 후 ls -li로 어떤 파일들이 있는지 확인했다. 3개가 있는데 flag는 col 계정으로는 못 읽는다. 짐작해보면 특수 권한이 있는 col 파일로 flag를 읽어야 할 것 같다. 일단 col.c가 col의 소스코드로 보이니 cat으로 읽어보자. 일단 hashcode가 0x21DD09EC 이다. check_password(const char* p) 함수에서는 반복문으로 int형 4byte씩 더해주어 res변수에 저장하고 있는 걸 알 수 있다. main에서는 조건문들을 봤을 때 매개변수의 길이가 20이 아닌 걸 입력하면 "passcode length should be 20 bytes"를 출력할 것 같고, hash..
setuid 개념 정리 -- 과제1 -- Setuid란? - 사용자가 실행 파일을 실행할 때 소유자의 권한으로 실행하는 권한이다. set-user-id로 ls -l로 볼 때 s로 표시된다. setuid가 설정된 파일 실행 시, 일시적으로 파일 소유자의 권한을 얻어 실행할 수 있게 된다. - 사용법 예시 #chmod u+s 파일이름 #chmod 4755 파일이름 - 대표적인 setuid 파일 : /usr/bin/passwd ->비밀번호 변경을 할 수 있는 명령어 - 실행권한을 확인했을 때 대문자 S일 경우 setuid만 있고 실행권한 x / 소문자 s일 경우 setuid와 실행권한 둘 다 o -- 과제2 -- which id로 어디에 있는지 찾는다. -> cp로 id_1이라는 이름으로 복사해온다. -> ls로 잘 복사되었는지 확..
[2주차 과제] swing_pwn_chall 풀이 apt-get update apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential python3 -m pip install --upgrade pip "pip