본문 바로가기
728x90
SMALL

rop4

[ROP emporium] write4 x64 바이너리 문제 풀이입니다문제에서 print_file의 plt가 있다고 한다하지만 바이너리 내부에는 flag.txt 관련 문자열이 없으므로 직접 쓰기 가능한 영역에 넣어서 함수의 인자로 넘겨서 실행시켜야한다 strings로 본 결과 해당 함수는 존재하였다 방지기법은 Partial RELRO와 NX만 켜져있다 readelf을 본 결과data 영역에 쓰기권한이 존재하는것을 볼 수 있다get_section_by_name('.data').header.sh_addr를 이용하여 pwntools에서 주소를 가져올 수 있다 문자열을 삽입하기 위해 r14 r15 레지스터가 필요함으로 ROPgadget으로 pop r14 r15, mov r14 r15 가젯의 주소를 확보했다인자를 전달하기 위한 rdi 가젯도 확보한다 .. 2026. 6. 12.
[ROP emporium] callme x64 바이너리 파일 풀이입니다. 연결절차에 마지막줄에 .dat파일은 무시하라고 되어있습니다 main과 pwnme 함수는 앞 문제들과 동일합니다패딩을 0x28로 채우고 뒤에서 반환값을 덮어쓰면 됩니다 문제 설명에서 callme_one, callme_two, callme_three를 호출해야하는데인자로 0xdeadbeef 0xcafebabe 0xdoodoof값을 넘겨줘야한다고 되어있습니다 문제 설명에 64비트에서는 아래처럼 2배로 값을 써야한다고 되어있습니다0xdeadbeefdeadbeef 0xcafebabecafebabe 0xdoodoofdoodoof 문제 설명에서 예시를 보여줬는데callme_one(0xdeadbeefdeadbeef, 0xcafebabecafebabe, 0xd00df00d.. 2026. 6. 3.
[ROP emporium] split x64환경에서의 풀이입니다 문제 설명에서는 ret2win문제의 취약점은 그대로 존재하지만 필요한 가젯들이 흩어져있다고 한다 main, pwnme함수는 동일하다 strings로 바이너리의 문자열을 봐보자 차이점으로 바이너리안에 system 함수가 있고ret2win같은 함수가 사라져있다 따라서 이번 문제는 떨어진 system함수를 이용하여 해결해야한다 rbp-0x20 ┌────────────────────┐ │ buf[32] │ ← 0x20 bytesrbp ├────────────────────┤ │ saved RBP │ ← 8 bytesrbp+0x8 ├────────────────────┤ │ save.. 2026. 6. 2.
[ROP emporium] ret2win x64 아키텍처의 풀이입니다 문제 파일을 실행하면 read함수로 32바이트 스택버퍼에 사용자의 입력을 56바이트만큼 충죽시키는것을 도전할것이다라고 한다 main함수를 어셈블리로 보면 위에서 바이너리를 실행시켰을때 출력문 2개를 시키는거를 puts함수 2개가 역할을 하는것으로 추측이 된다그리고 밑에 수상해 보이는 pwnme 함수를 호출하는것이 보인다 read함수가 보인다 System V 호출규약에 따라edi = 0x0, esi = rax([rbp - 0x20], buf[0x20]), edx = 0x38가 순서대로 인자로 들어가서 call을 한다 read(0, buf, 0x38)c언어로 복원하면 다음과 같다 rbp-0x20 ┌────────────────────┐ │ buf[32] .. 2026. 6. 1.
728x90
LIST