분류 전체보기 292

FTZ level17 -> level18 Write up(Python)

FTZ 17 Level ebp-56, buf의 시작 주소. ebp-16, call 함수 포인터의 주소. level17_parents.py 입니다. putenv 함수는 자식 프로세스에서 영향을 미치기 때문에, 제일 위에서 프로그램이 돌고 있도록 만들었습니다. level17_1.py 입니다. 여기서 사용하는 getSC 코드는 이렇습니다. 여기서 출력하는 환경 변수의 주소 문자열을 읽어와서 long 타입으로 캐스팅합니다. level17_2.py 입니다. 이 파일이 출력된 payload를 읽어서 attackme 파일에 전달해줍니다. 감사합니다.

소개

- 2017.12.14저는 선린인터넷 고등학교 정보통신과 재학 중인 17학번 임재민입니다. 블로그를 운영하면서, 한 번 배운 지식을 넘어가는 것이 아니라 정리하게 되었습니다.그러니 더욱 이해도 잘 되고 쌓여가는 글들을 보며 뿌듯하기도 했습니다. 앞으로 2~3개월 단기 목표는 파이썬 익스플로잇 스크립트를 짜서 pwnable.kr - Toddler's Bottle 문제들을 다 푸는 것입니다.그리고 코드게이트 본선 진출을 하기 위해서 공부 중입니다. - 2020.02.29저는 고려대학교(서울) 전기전자공학부에 입학하게 된 20학번 임재민입니다. 앞으로 알고리즘과 인공지능에 대해 공부할 것입니다.배우고 공부한 자료들을 블로그에 올릴 예정입니다. -------------------------------------..

블로거 소개 2017.12.14

[pwnable.kr] Toddler's Bottle - random

[pwnable.kr] Toddler’s Bottle – random 코드는 이렇습니다. rand 함수는 난수를 생성하는 함수입니다. rand 함수는 seed표의 값에 따라 발생하는 난수의 값이 달라지는데, srand 함수로 seed 값을 정해줄 수 있습니다. seed 값이 다르다면 rand 함수에서 발생시키는 난수 또한 달라지게 됩니다. 그래서 시간 값을 매개로 초기화하게 되면 불규칙적인 난수를 생성하게 됩니다. 하지만 위의 코드에서는 seed 값을 주지 않았기 때문에 매 프로그램 실행 시마다 같은 난수를 얻게 됩니다.동일한 seed표에서 값을 참조했기 때문이죠. 즉, 랜덤이 아니라는 것입니다. 그럼 gdb에 올려서 random값을 확인한 다음에 random 값과 0xdeadbeef를 xor 한 결과를..

[pwnable.kr] Toddler's Bottle - passcode

[pwnable.kr] Toddler’s Bottle – passcode 내용을 보아하니 there was some compiler warning. 컴파일러에서 경고가 나는 듯 합니다. ssh로 접속해서 code를 열어봅니다. warning을 확인해보기 위해 code를 가져와서 직접 컴파일 해봤습니다. login 함수에서 scanf 함수를 호출할 때, 취약한 부분이 있는 것 같습니다. 원래 scanf 함수에서는 &var, 변수의 주소를 받아 참조해서 값을 저장합니다. 하지만 저기 변수의 주소가 아닌 변수 자체를 넣었기 때문에, 변수에 들어있는 값을 주소로 참조하여 %d로 받아서 저장합니다. 즉, 저 변수에 원하는 주소가 들어있다면, 그 주소의 값을 덮어쓸 수 있습니다. welcome 함수가 끝나고, 스택..

반응형