picoCTF 2018 buffer overflow 1 - Points: 200

2313 단어 picoCTFCTF

문제





풀어 보았다.



버퍼 오버플로우 문제인 것 같습니다.
먼저 소스와 프로그램을 다운로드합니다.



열심히 win()을 호출하여 flag.txt를 출력시키는 문제인 것 같습니다.

디렉토리를 확인해 봅니다.



objdump하여 win() 위치를 확인합니다.
objdump -d -M intel ./vuln



080485cb가 win()의 시작이라고 할 수 있었습니다.
그런데 이것을 어디에 넣으면 좋겠지요.
한 번 실행해 보겠습니다.



많이 입력했는데 0x76757473로 바뀌었습니다.
이것은 UTF-8의 vuts입니다.
유니코드 지원 문자 코드 표 - ASH

순서가 반대가 되고 있는 것은 리틀 엔디안이기 때문이라고 생각됩니다.
여기를 방금 확인한 win()의 주소 080485cb로 하면 좋을 것 같습니다.
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
↓
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr\xcb\x85\x04\x08

로 실행해 보겠습니다.



좋지 않았습니다.
0x6263785c가 무엇인가 조사해 보면 「bcx\」이었습니다.
16진수가 아니라 그대로 문자로 읽혀진 것 같습니다. . .

echo에서 이스케이프 시퀀스를 사용할 수 있으므로 사용합니다.
구체적으로는 다음입니까?
echo -e "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr\xcb\x85\x04\x08" | ./vuln



할 수 있었습니다.

좋은 웹페이지 즐겨찾기