목록# 나/pentest (WEB) (93)
의미없는 블로그
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
코드가 아주 간단하다 지난번에는 코드 안에 실행시키고자 하는 특정 함수가 있어서 RET 주소가 그 함수를 가리키도록 조작해서 문제를 풀었는데 이번에는 코드 안에 아무것도 없다 문제의 의도는 스택에 쉘코드를 삽입해서 RET 주소가 쉘코드 위치를 가리키게하여 실행시키는 것~ 스택 구조는 아래와 같은데 buffer[64] 에다가 입력값을 초과시켜 넣어서 RET 아래에다가 쉘코드를 집어넣고 RET 는 쉘코드 주소를 넣어서 RET 되면 쉘코드 위치로 넘어가 실행되게끔 한다 buffer[64] AAAAA... ------------- → ------------- RBP AAAAA... ------------- → ------------- RET RET(쉘코드 주소) ------------- → -----------..
코드 작성 win() 함수를 불러서 code flow successfully changed 가 출력되면 되는데 저번에 fp() 처럼 win() 주소를 불러줄만한게 안보인다 그래서 main() 이 실행되고 난 다음에 return 할 때 주소를 바꿔서 win() 주소로 가도록 하면 됨 스택에서 buffer 가 젤 위에 있으니까 buffer 에 글자 많이 넣어서 RET 까지 덮어쓰게 하면 된다 main() ...............↗.....................↘............... RET buffer[64] -------------- RBP(EBP) -------------- RET -------------- 컴파일 해주고 gdb 로 실행해서(gdb ./stack4) ret 주소 확인하고 ..
VM 에서 테스트 환경 구축하고 포트포워딩 해서 다른 PC 에서 접속하기~ Docker 에서 IP(192.168.19.138)랑 포트(32768) 확인하고 https://192.168.19.138:32768 로 접속하면 잘 들가진다 로컬 CMD 에서 아래 명령 입력 [netsh interface portproxy add v4tov4 listenport=로컬에서 접속할 포트 listenaddress=로컬 아이피 connectport=VM 포트 connectaddress=VM 아이피] 저것만 하면 안되고 방화벽에서 열어줘야 한다 인바운드 - 새 규칙 클릭하고 아래와 같이 규칙 만든다 이제 로컬 IP 로 접속 테스트 해본다~ 로컬 IP 확인하고 https://150.24.95.134:32768 로 접속하면 잘..
코드 작성 아래 포인터에 대한 설명을 보면 알 수 있듯이.. int (*fp) () 는 그냥 fp 라는 포인터이다 스택에는 아래처럼 쌓이는 거고 fp = 0 으로 선언되어 있는데 if(fp) 일때 fp(); 로 포인터 값을 부르니까 fp 가 0 이 아니도록 덮어씌워주면 된다 buffer[64] --------------- *fp --------------- 문제는 win() 함수가 호출되어져서 code flow successfully changed 가 출력되어야 하는데 win() 함수를 호출하려면 fp 포인터가 win() 함수를 가리키고 있는 상태에서 fp() 가 호출되어지면 된다 그러므로 fp 포인터를 덮어씌우되 win() 함수를 가리키는 주소값으로 덮어씌워야 한다 컴파일을 하고.. (gets 함수에 ..