picoCTF 2018 buffer overflow 1 - Points: 200
문제

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

열심히 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

할 수 있었습니다.
Reference
이 문제에 관하여(picoCTF 2018 buffer overflow 1 - Points: 200), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/samohan/items/e33e7711a45e2fedbeb2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
버퍼 오버플로우 문제인 것 같습니다.
먼저 소스와 프로그램을 다운로드합니다.

열심히 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

할 수 있었습니다.
Reference
이 문제에 관하여(picoCTF 2018 buffer overflow 1 - Points: 200), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/samohan/items/e33e7711a45e2fedbeb2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)