본문 바로가기

[BOF원정대/Fedora3] iron_golem -> dark_eyes /* The Lord of the BOF : The Fellowship of the BOF - dark_eyes - Local BOF on Fedora Core 3 - hint : RET sleding*/ int main(int argc, char *argv[]){ char buffer[256]; char saved_sfp[4]; if(argc < 2){ printf("argv error\n"); exit(0); } // save sfp memcpy(saved_sfp, buffer+264, 4); // overflow!! strcpy(buffer, argv[1]); // restore sfp memcpy(buffer+264, saved_sfp, 4); printf("%s\n", buffer);} dark.. 더보기
[BOF원정대/Fedora3] gate -> iron_golem 이전 레드햇에서의 BOF원정대와 달라진점은 1. exec-shield : 스택에 존재하는 어셈블리어는 실행이 안됩니다. 즉, 쉘코드를 스택에 올려봐야 소용이 없습니다. 2. 랜덤스택: 스택의 주소가 계속 바뀌기때문에, 어짜피 스택의 한 지점으로 점프하기도 쉽지 않습니다. 3. 00 으로 시작되는 라이브러리 주소: 00(NULL)이 들어감으로써, 라이브러리 주소를 쓰는순간 스트링이 끊깁니다. 즉, 라이브러리 주소는 마지막에 딱 한번만 사용 가능합니다. 그렇다면, 이를 해결하기위해서 제가 사용할 방법은, execl을 이용하고, fake ebp를 이용해서 GOT부분을 execl의 argument로서 사용할것입니다. 좀더 풀어서 설명하자면, execl의 argument는 다음과 같습니다.execl(실행할 파일 .. 더보기
[PHDays 2012] Binary 100 Write up 문제파일: 저한테는 Binary 100 치고는 어려웠던 문제였습니다. 우선 PEID로 살펴보았습니다. UPX로 패킹이 되어있네요. IDA를 사용하기위해 우선 upx308w를 이용하여 언패킹을 하였습니다. 언패킹을 한후, 파일이름을 unpacked.exe로 바꾸고 작업하였습니다. 그냥 실행하면, "Ups, some calls are wrong or missing" 이라는 말만 하고는 끝납니다.. 올리디버거로 그 부분을 찾아가보면, [403790] 에 있는 값이 0이기때문에 아까와같은 메세지가 떴습니다. 억지로 flag를 보여주는곳으로 점프를 시켜봤자, "HoppaKey"가 뜰 뿐입니다. 하지만, 문제에서 답은 MD5로 주어진다고 했으므로, 이 "HoppaKey"는 답이 아닙니다. 그렇다면, [403790].. 더보기