일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리리남매
- 최강욱
- 불가피
- libtins
- 해킹
- 김재석
- 이상형 만들기
- 은혜의 강 교회
- 고민정
- 제넥신
- 폰폰테스트
- 스콜피온킹
- 김영권
- 김영권 아내
- 픽크루
- 금리인하
- 임영규
- 미국 금리인하
- 조희연
- 이태원 클라쓰 15회 예고
- 학교 개학 연기 4월
- 킹덤 고근희
- 홍혜걸
- 양적완화
- 스페인 코로나
- 이지혜
- 뭉쳐야 찬다
- 성남 코로나 확진자
- 성남은혜의강교회
- 유튜버 김재석
- Today
- Total
목록Hackerschool FTZ Write-up (21)
Dork's port
정말로 끝이 보이기 시작하네요! 16번 입니다! 힌트를 보니 printit의 함수를 포인터 형태로 저장하여 마지막에 call()을 통해 포인터에 저장된 함수를 call하네요! 원래대로라면 Hello there!이 출력되는 함수가 실행되어야 하지만 그 위에 의심스러운 함수가 있네요! 자연스럽게 gdb를 사용하여 main의 코드를 볼까요! fgets의 인자로사용하는 저 c8의 주소가 buf의 주소이겠네요! 그리고 마지막에 어떠한 주소를 저장하고 call을하는 저 주소가 바로 call의 변수 이겠네요! 역시 차이는 0x28만큼 납니다! 그리고 우리는 여기서 shell 함수의 주소를 찾기 위해 아래와 같이 명령어를 입력하면 친절하게 gdb가 시작주소를 알려줍니다! (gdb) disass shell 만세! 그리고..
안녕하세요. 벌써 15번이네요! 끝이보입니다!!!!! 시작해보죠!! check의 주소에 있는 값과 0xdeadbeef를 비교하여 같다면 자동으로 레벨 16의 쉘을 주는 간단한 문제입니다!메모리 구조를 봐야하기 때문에 gdb로 해당 프로그램을 실행시켜 줍니다! 이전의 프로그램들은 gdb의 권한을 막아둔 것 같던데 이번 문제부터는 아마 gdb가 가능하도록 해놓은 것 같네요! 이것때문에 삽질을 ㅠㅠ 이전 문제에서 그래 왔듯 함수의 인자값을 넘겨주는 것으로 변수의 주소를 추측해 보도록 하겠습니다. fgets의 인자로 주는 저 주소는 buf라고 예측할 수 있습니다. 그리고 0xdeadbeef와 비교하는 저 주소의 값은 check라고 예측할 수 있겠군요! 그리고 deadbeef라는 값을 메모리 어딘가에 넣어야하는데..
안녕하세요!!!! 벌써 14번이네요 ㅎㅎㅎ 시작하죠! 이번에는 check의 값을 0xdeadbeef로 초기화하는 문제이네요! 저번 문제를 자의로 푸셨으면 쉬울 것이라 생각합니다.우선 스택의 분석을 위해서 tmp폴더에 복사한 후 gdb로 열어서 보게 되면 deadbeef와 비교하는 저부분이 check의 주소라는 것을 추론할 수 있습니다. 그리고 fets을 부르기 전 인자로 전달하는 저 주소는 buf라는 것을 짐작할 수 있죠! 그래서 주소의 차이를 계산해 보면 f0 - c8 = 0x28이라는 것을 알 수 있습니다. 즉, 버퍼에 0x28(40)만큼 채운 후 그 뒤 값을 deadbeef로 채우면 될 것 같군요.그래서 아래와 같이 코드를 작성 할 수 있습니다. 마찬가지로 프로그램 실행 후 버퍼의 값을 입력 받으므..
문제 13번 입니다! 힌트를 보니 특이한 코드가 보이는군요! i가 16진수 값 1234567로 초기화가 되어있고 문자를 입력 받은 후 i를 체크하여 값이 변했다면 프로그램을 종료시키는군요! 문제를 미뤄보아 buf의 스택 밑에 i가 위치하고 i의 값을 0x1234567로 변하지 않게 또는, 0x1234567로 초기화를 시켜주어야 겠군요! 오버플로우 위해서 값 입력은 필수적이니 변하지 않게 할 수는 없을 것 같습니다. 따라서 i의 주소에는 다시 0x1234567로 초기화를 시켜주도록 하죠! 저기 있는 if문을 우회하기 위해서요!먼저 스택을 보기위해 gdb를 사용합니다. gdb를 사용하기 위해 위 코드를 아래 명령어로 복사하여 디버깅 옵션을 주어 컴파일 해보죠! $ cp hint tmp/attackme.c$ ..