bufferoverflow(19)
-
HACKCTF - x64 Simple_size_BOF
전 문제와 똑같이 문제 이름 만으로 유추해보면 x64 BOF 문제같다. 실행시켜 보겠습니당. 자살방지 문제라고 해서 조금 깜짝놀랐네요 ㅋㅋ 실제로 문제 풀다가 약간 자살각이 서기는 했습니다. 함수를 보면 처음에 v4의 주소를 뿌려주고, v4에 값을 받고 끝나버립니다. 굉장히 허무한데요..? 보호기법을 확인하니 NX가 설정되어있지 않습니다. 따라서 v4주소를 받으니 1. 받은 v4주소를 저장해둔다. 2. v4에 값을 입력할때 shellcode를 입력한다 3. 리턴을 v4로 준다. 로 익스 코드를 짤 수 있습니다. 필자는 초반에 자살각이 슨 이유가 버퍼위치를 맞게 준거 같은데 안되서 삽질좀하다가, nopslid기법를 사용해서 해결하려고 하였습니다. 아래는 익스 코드입니다. 1 2 3 4 5 6 7 8 9 1..
2020.07.13 -
HACKCTF - 내 버퍼가 흘러넘친다!!!
뻔한 BOF문제로 유추가 되니 일단 실행시켜보겠습니다. 별다른 출력없이 입력만 받고 끝나는걸 확인할 수 있습니다. main함수를 보면 9번째에서 gets에서 입력값에 제한을 두지 않으니 bof가 일어나는것을 확인할 수 있습니다. 그리고 여기서 함수 목록을 보면 별다른 직접 shell을 가져다 주는 함수를 발견할 수 없는데 어떻게 풀이를 할까 고민하다가 직접 쉘코드를 넣는게 가능할까 생각을 해봤더니 NX가 가능하니 쉘코드를 직접 넣으면 될거같네요. 즉 메인함수를 다시 확인하면 1. name에 쉘코드를 넣고 2. s를 bof시켜서 리턴을 name변수로 가게끔 하면 쉘을 얻을 수 있을 것 같네요. S의 크기는 보이는것처럼 0x14이고 SFP까지 고려해주면 아래와같이 페이로드를 작성할 수 있겠네요. 1 2 3 ..
2020.07.09 -
HACKCTF - Basic_BOF #1
오랜만에 포너블을 잡고 첫번째로 풀이한 문제 프로그램은 만나서 가장 먼저 해야하는일은 실행시켜보는 것 보아하니 값을 입력받고 그 값이랑 또 다른값인 체크 값을 보여주는 것 같다, IDA로 코드를 까봐서 무슨 동작을 하는 친구인지를 살펴보는게 좋을 것 같다. 코드를 보면 15번째에 쉘을 주는 코드가 있기에 15번째로 가려면 어떻게 해야할지가 관건이다 (10번째 분기문 통과 & 12번째 분기문 들어오기) 1. 10번줄 통과하려면 v5 값을 다른값으로 변조해주면 된다. 2. 12번줄에서 안으로 들어오려면 v5 값을 0xdeadbeef 로 넣어야한다. 정답이다 전형적인 BOF문제이다. 여기서 BOF로 익스플로잇을 하려면 s의 버퍼크기를 알아서 모두 덮고, 그 뒤에있는 v5에 0xdeadbeef를 넣어주면 된다...
2020.07.06 -
pwnable.kr - bof
세번째 pwnable.kr 문제풀이군요.중간중간에 다른문제들 풀다와서 풀이가 많이 느린 것 같습니다 :) 먼저 문제를 확인하면 소스코드하고 파일 하나를 주는군요. 12345678910111213141516171819#include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); }}int main(int argc, char* argv[]){ func(0xdeadbeef); return 0;} Colored by Color Sc..
2018.08.19 -
LOB ALL CLEAR
앗..드뎌 올클이다!
2018.08.03 -
LOB - 20. xavius -> death_knight
드뎌 LOB마지막 문제입니다! 이번문제 진짜삽질 많이했어요...후...이게 그냥 익스였으면 삽질 조금만하고 풀 수 있었겠지만..원격으로 익스하는거라 리버스쉘 찾는데 삽질..로컬이아닌 외부 서버 리눅스로 하면서 삽질...ip부분이 lob의 ip인지 제 우분투ip인지 삽질..이렇게저렇게 하긴했는데 많이 연습해야 할 것 같네요 ㅎㅎ 소스코드를 봅시다! 윗부분은 거의다 서버여는 코드같고 아랫부분만 bof가 일어나는 부분이군요 저부분을 그냥 익스한다면 인자값이 들어가는위치 찾아서하면 간단하겠지만,소켓통신으로 서버를 열기때문에 무작위로 대입해줘야할 것 같습니다!파이썬 코드는 http://blog.c2w2m2.com/22 코드를 많이 참고하였습니다! 리버스 쉘코드는 아래 링크를 참고해주세요!http://shell-s..
2018.08.03