본문 바로가기

ROP11

Exploit Tech: Return Oriented Programming Return Oriented Programming ROP는 리턴 가젯을 사용하여 실행 흐름을 구현하는 기법이다. 공격자는 return to library, return to dl-resolve, GOT overwrite 등의 페이로드를 구성할 수 있다. ROP 페이로드는 pop rdi; ret 같은 리턴 가젯으로 구성되는데 ret 단위로 여러 코드가 연쇄적으로 실행되는 모습에서 ROP chain이라고도 한다. // Name: rop.c // Compile: gcc -o rop rop.c -fno-PIE -no-pie #include #include int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0).. 2021. 12. 27.
Seoul Housing 이번에 풀어볼 문제는 Hsapce에서 열린 CTF문제중 system 분야의 문제인 Seoul Housing 문제를 풀어보도록 하겠다. 1. Mitigation 메모리 보호기법은 전부 걸려있고 stripped 파일이다. 2. 문제 확인 실행시켜보면 실행되어 있는 프로세스를 보여주고 총 두번 입력을 받는데 입력받은 것을 출력해준다. 3. 풀이 메인 함수 부분을 보면 sub_88A 함수가 보이고 문제를 실행 시켯을때 처럼 입력을 두번 받고 두번 출력해준다. 보면 카나리가 존재하는것을 확인 할 수 있고 read함수에서 BOF 취약점이 존재한다. sub_88A 함수에서는 ps명령어를 실행 시킨다. gdb를 통해 read함수에서 입력을 받고 스택 상태를 보면 빨간 박스는 카나리 부분이고 초록 박스는 파이 부분이다... 2021. 5. 1.
World Best Encryption Tool 1. Mitigation GOT Overwrite가 가능하고 실행권한도 없다. 그리고 카나리가 걸려있다. 2. 문제 확인 문제를 확인해보면 입력을 받는데 입력을하니 문자가 암호화되서 나오고 yes를하면 다시 입력을 받고 No을하면 종료한다. 3. 문제 풀이 소스 코드를 보면 입력을 받고 do ~ while문이 있고 그 안에 while문에서 xor 연산을하여 암호화를 한다. strncpy에서 local_48에 local_88을 복사를하느데 0x39(57)바이트 만큼 복사를 한다. 그리고 계속 진행할건지 안할건지 묻고 안한다면 프로그램을 종료하는데 카나리 검사를 한다. 아까 문제확인을 할때 암호화한 값을 출려개주는데 그 부분에서 카나리를 릭하면 될거 같은 느낌이 강하게 든다. gdb로 확인해보자. rbp-0.. 2021. 4. 20.
basic_rop_x86 보호되어 있는 글 입니다. 2021. 4. 6.