지역변수를 임의의 값으로 overwrite
이 말은, 반복문같은 프로그램의 루틴을 정하는 중요한 지역변수를 임의의 값으로 덮는다는 이야기다.
예를 들어
int i;
int j=10;
for(i=0; i<j; i++)
{어쩌구 저쩌구}
이런식으로 된다고 쳤을 때 j는 반복문의 횟수를 정하는 중요한 지역변수이다. 이 값을 임의의 값으로 덮는다는 소리!!
실습
이 코드로 할건데요! 위에서 말한대로라면, num을 조작해봐야겠죠! 반복문에 사용되는 중요한 숫자이니!
main+41에 0xa넣는 부분!! 여기가 바로 int num=10을 의미하는 곳이다.
0xa가 10진법으로 바꾸면 10이니까
아 그리구 요 코드는 참고로
그냥 정상적으로 이름을 20자 내에서 입력하면 hello~~ 이름 하고 구구단 2단을 출력해준다.
반복문이 1부터 9까지 돌기 때문이쥐
하지만 20자 이상 이름을 작성하게 되면 이런식으로 2단이 아주 길게길게길게 나온다..
참고로 이걸 멈추려면 ctrl c 눌러야함
그래서 pwntools를 이용해서 아까 나온 10을 우리가 원하는 수로 바꾸어보장
pwntools 기본 명령어
pwntools는 리눅스 환경에서 exploit코드 작성을 쉽게 해주는 파이썬 라이브러리이다. exploit 실습에서 불편하게 input을 주지 않고 편리하게 input과 output을 받아오기 위해서 사용한다. 우분투에서 파
nicedammy.tistory.com
아까 쓴 기본 명령어인데 이거 보면서 이해하면 다 될것이당
A 20개 써줘야 했고 이번에는 num을 3으로 조작해볼 것이기 때문에 3을 페이로드에 더한것이다.
실행을 해주면!! 2단의 2*2까지만 출력되는 모습을 볼 수 있다.
이걸 하려면 pwntools를 가지고 있어야 하는데, 나는 잘 깔리지가 않아서 스터디 멘토님의 환경을 빌려썼다.
이거는 p32를 이용해서 4바이트 리틀엔디언 데이터로 변환할 수 있게 해주었다.
0x30은 48이다.
이렇게 해놓고 실행을 하면 2*47까지 출력된다.
'HACKING > SYSTEM' 카테고리의 다른 글
Buffer Overflow 취약점 (BOF) _ memory leak (0) | 2021.09.24 |
---|---|
pwntools 기본 명령어 (0) | 2021.09.24 |
어셈블리 핸드레이 2 (0) | 2021.09.07 |
어셈블리 핸드레이 1 (0) | 2021.09.07 |
CVE-2019-17320 | 넷사랑 XFTP Client 버퍼오버플로우 취약점 (0) | 2021.08.31 |