<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>pwnable on spooky38 | Red Team &amp; Pentesting 학습 노트</title><link>https://ubermen5che.github.io/categories/pwnable/</link><description>Recent content in pwnable on spooky38 | Red Team &amp; Pentesting 학습 노트</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><lastBuildDate>Sat, 11 Jul 2026 02:42:00 +0900</lastBuildDate><atom:link href="https://ubermen5che.github.io/categories/pwnable/index.xml" rel="self" type="application/rss+xml"/><item><title>[pwnable.kr] - BOF</title><link>https://ubermen5che.github.io/posts/pwnkr-bof/</link><pubDate>Sat, 11 Jul 2026 02:42:00 +0900</pubDate><guid>https://ubermen5che.github.io/posts/pwnkr-bof/</guid><description>pwnable.kr - BOF 요약 gets()는 입력값의 길이를 검증하지 않는 취약한 함수다. overflowme[32] 배열의 크기를 초과하는 입력을 전달해 **버퍼 오버플로우(BOF)**를 일으키고, 스택 상위에 위치한 key 변수의 값을 원하는 값으로 변조할 수 있다. 배경 지식 스택 버퍼 오버플로우 (Stack Buffer Overflow) 지역 변수(배열)는 함수의 스택 프레임 안에 잡힌다. 스택은 높은 주소에서 낮은 주소로 자라지만, gets()나 strcpy() 같은 함수는 버퍼에 값을 낮은 주소 → 높은 주소 방향으로 순차적으로 쓴다.
즉 배열 크기를 넘겨서 입력하면, 넘친 데이터가 배열보다 높은 주소에 있는 다른 데이터(다른 지역변수, saved EBP, return address 등)를 덮어쓴다.</description></item></channel></rss>