System Hacking/문제 품 7

fsb

보호기법 프로그램 실행%6$llx를 쳐보면 입력한게 문자열로 출력됨.입력한 값이 6번째 인덱스에 있는걸 알았음. %6$llx 해석%6$ → **6번째 인자(argument)**를 참조llx → 그 인자를 unsigned long long (8바이트) 정수로 간주하고→ 그걸 **16진수(lowercase)**로 출력IDA분석 1. fsb가 가능해 첫번째 read에서 got주소를 넣어서 leak해주고2. 두 번째 read에서 got overwrite로 puts_got를 system으로 바꿔서 system("/bin/sh")가 실행되게 함.Exploit1. read_addr leak프로그램 실행에서 6번째 인덱스에 내가 입력한 값이 있는걸 알았으니까7번째 인덱스에 주소를 넣어주고6번째 인덱스를 사용해 %s로..

diary

보호기법카나리, NX, PIE 있음.IDA분석v5가 unsigned로 지정돼 있어서 view와 write에서는 음수인덱스까지 입력 가능하기 때문에 oob발생 가능.view함수를 보면edit함수를 보면32바이트까지 받아주고 &note[32 * a1]에 저장을 해줌 전략11_view에서 got주소를 찾아서 libc leak해주고 system함수 찾음3_exit에서 puts 함수를 got overwrite로 system함수로 바꿔준 후 실행되게?그럼 Bye는 어떻게함 안에 문자열도 바꿔줘야함.2_write에서 binsh를 입력해줄 수 있게 해봄.전략 21_view에서 got주소를 찾아서 libc leak해주고 system함수 찾음2_write에서 binsh를 입력해줄 수 있게 해봄.1_view에서 puts로 ..

sf2

보호기법NX만 켜져있음.IDA 분석 1_create datascanf는 배열의 0번째 인덱스에만 입력을 받고, 입력한 값은 0 또는 1 이어야함. 2_show datav1의 값이 1미만일때만 printf가 저장된 주소 출력을함. 3_commentbuf가 28byte로 크기가 정해져있는데 50바이트까지 받음.bof 발생 가능함. 프로그램 실행해봄 create data에서 데이터를 생성하고(index 0과 1에 생성)show data에서 생성한 인덱스를 확인해보면 index 1에는 hello가 index2에는 datadata가 들어가 있는걸 볼 수 있음.OOB2_showdata에서 음수를 입력했을 때 error가 뜨지 않기때문에 OOB 발생가능 음수 값을 계속 넣다보면 -4를 넣었을 때 이상한 값들이 ..

si - stack pivot

보호기법IDA분석할당된 버퍼크기는 256byte인데 read에서 272바이트까지 받음. -> bof 발생근데 버퍼까지 채운 후 sfp와 ret를 채우면 페이로드 작성할 공간이 얼마 남지 않음.스택피벗으로 다른 공간을 사용해 페이로드를 입력해야함.프로그램 실행해봄Hi가 출력되고 입력창이 뜸. 입력을 하고나면 프로그램 종료.Exploit페이로드 1- 첫 에필로그 leave(mov esp ebp ;pop ebp) 실행에서 sfp에 이동할 수 있게 bss영역을 넣어 ebp를 bss로 이동시킴.- 그 후 ret에 read_leave_ret 가젯을 이용해 read-0x104에 입력을 받음. - 첫 번째 페이로드가 실행되고  ebp는 bss에 위치. read실행된 상태. rw-p 권한이 있는 실행 파일 내부의 메모리..

sf3

보호기법IDA 분석버퍼크기가 32바이트로 지정돼 있는데 첫 번째 read에서 36바이트를 받음. -> BOF 발생두 번째 read에서도 128바이트를 받음 -> BOF 발생 v5는 canary값이고return에서 카나리값을 출력한다. 전략?1. 첫 번째 read로 카나리릭2. 두 번째 read에서 필요한 함수 주소값 릭 후 ROP로 main함수로 돌아감3. 돌아간 main에서 첫 번째 read는 입력을 36바이트만 받기 때문에 넘겨줌4. 돌아간 main에서 두 번째 read에서 system(/bin/sh) 실행프로그램 실행해봄 첫번째 입력창에서 받은 값을 your data에서 출력해주면 카나리값이 출력된다.그리고 그 뒤에 입력창이 한 번 더 뜨게됨. 이게 두 번째 read인듯.Exploit카나리릭  카나..

sf1

보호기법 확인보호기법은 NX만 있음.파일 실행해봄sf1을 실행시키면 system address: 함수주소를 출력하고, 입력칸이 뜸.아무거나 입력했더니 그냥 프로그램 종료됨.여러번 실행해봤는데 주소가 계속 바뀜.IDA 분석mainvul()함수를 실행하기래 봄.버퍼 크기 136byte 지정printf로 system 함수 위치 주소 출력read함수에서 buf사이즈가 160byte임 → bof 발생할 수 있음.Exploit payload = buf 크기 136 payload += sfp payload += system() address payload += dummy payload += "/bin/sh" address 이 순서대로 익스플로잇 실행해볼거from pwn import*p = process('./sf1..