본문 바로가기
반응형

분류 전체보기167

pwnable.kr [Toddler's Bottle]->[flag] [flag] flag파일을 다운받는다. 우선 hex값을 보면 ELF파일에 UPX로 패킹 되어있는걸 확인할 수 있다. 우선 언패킹을 해준다. flag가 rdx에 있다. b *main+39 해주고 rdx를 보면 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[bof] [bof] bof문제이다. func에 넣은 인자 deadbeef를 를 오버플로우를 통해 cafebabe로 바꿔주면 된다. gdb로 확인해보자. 스택의 구조를 대략 살펴보면 0xdeadbeef ret sfp ? overflow ? 로 있을것이다. main +29 에서 ebp-0x2c (44)로 입력받은 인자를 저장하는 것을 알 수 있다. 그렇다면 0xdeadbeef ret4 sfp4 dummy12 overflow32 로 스택 구조를 알 수 있다. payload를 짜보면 52byte + cafebabe 이다. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[collision] [collision] 소스코드를 보면 20바이트의 argv[1]을 주고 인자의 값과 hashcode(0x21DD09EC)를 맞게 하면 풀리는 문제이다. 여기서 check_password(){}함수에서 argv[1]을 가지고 장난을 친다. argv[1]을 5번 더한 값을 반환해주는 함수이다. 인자를 포인터로 받아와서 4바이트 단위로 계산한다. for문에서 5번 더하므로 hashcode / 5의 값을 넣어 주면 되는데 계산해보니 마지막에 4를 더해줘야한다. 0x6c5cec8 (113626824[16]) 4번과 0x6c5cecc 1번을 넣어주면 된다. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[fd] [fd] ssh fd@pwnable.kr -p2222 fd에 setuid가 걸려있고 실행권한이 부여되어있다. fd.c파일을 확인하면 다음과 같다. read(“파일디스크립터”, “버퍼”, “버퍼의 크기”) 인데 여기서 fd가 0 = stdin 1= stdout 2 = stderr 이다. 그럼으로 fd 가 0이되어야 입력값을 받을 수 있다. fd는 atoi( argv[1])-0x1234로 정의 되는데, atoi는 10진수 정수 문자열을 정수로 리턴한다. 그러므로 argv[1] - 0x1234의 값이 0 이되면된다. 0x1234(16) = 4660(10) 2021. 8. 11.
Fake EBP Fake EBP EBP를 속이는 기법 입니다. ret 영역을 침범하여 입력값을 덮을 수 있을 때 사용합니다. (이 기법은 주로 ret까지만 덮어쓸 수 있고 특정 영역에 필터링 될 때 유용한 기법이다.) 이 공격의 핵심은 leave-ret 입니다. sfp를 조작하고, 처음 호출하는 ret 주소에 leave-ret 가젯을 실행시킴으로써 원하는 코드를 실행시킬 수 있습니다. 즉 sfp에 buf-4의 주소를 넣어주어 ebp가 buf-4로 가게하여 buf에 저장된 쉘코드가 온전하게 실행될 수 있도록 해줍니다. leave mov esp, ebp pop ebp ret pop eip jmp eip ret에다가 leave-ret가젯을 넣음으로서 총 2번 leave-ret 이 일어납니다. 먼저 처음 leave가 수행되면서.. 2021. 8. 10.
Frame Pointer Overwriting Frame Pointer Overwriting 이란 Fake ebp의 하위 개념으로써 서브 함수가 필요하고 1바이트 오버플로우가 일어나면 사용할 수 있는 기법입니다. 1byte overflow라고도 하네요 버퍼 위의 SFP 부분의 1바이트를 오버플로우 할 수 있게 되면 에필로그시에 ebp 레지스터를 조작할 수 있게 됩니다. 에필로그 과정은 leave ret 으로 이루어져 있는데 leave move esp,ebp pop ebp ret pop eip jmp eip 로 되어 있습니다. 만약 여기서 ebp를 변조시킨다면 leave가 수행되면서 변조된 주소로 내려가겠지요 그리고 ret가 수행될 것입니다. RET SFP BUFFER 의 형택의 스택이 존재할 때 이것을 RET SFP (1byte overflow) N.. 2021. 8. 10.
반응형