m0nd2y(321)
-
HACKCTF - Basic_FSB
문제 제목을 보면 FSB인것을 알 수 있으니 먼저 좁혀두고 가면 편할것이다. 실행하면 평범하게 입력값을 출력해준다. IDA로 실행해보면 전형적인 FSB문제 형식의 코드로 보인다 %p를 활용해서 주소를 출력해보면 첫번째 인자는 건너뛰고 2번째부터 시작되는것을 볼 수 있다. 또한 flag함수를 보면 /bin/sh 가 있으니 궁극적으로 이곳으로 리턴을 보내면 해결될 것이라는 것도 확인할 수 있다. 따라서 우리는 vuln함수의 printf(&format); 이 부분에서 printf.got 을 리턴으로 덮어주면 되니까 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from pwn import * r = remote("ctf.j0n9hyun.xyz", 3002) context.log_level =..
2020.07.08 -
HACKCTF - Basic_BOF #2
가장 먼저 해야할 일은 역시 실행시켜보는 것 이상한 문구가 나와서 당황했습니다. 따라서 이 프로그램은 뭔가 넣으면 뭔가가 나오는 프로그램 인것을 알 수 있죠 더 이상은 모르니 IDA로 까보면 1. [7번줄] s에 0x85사이즈의 값을 받아넣는다 2. [6번줄] s값을 출력하는 함수의 주소를 v5에 넣는다 3. [8번줄] s값을 출력하는 함수 주소 실행 그럼 이제 어떻게 풀어야할지 생각을 해야하는데 그 전에 보호기법 확인해서 풀이방향을 좁혀보자. nx가 가능하니까 단순 bof로 쉘코드를 넣는건 불가능(짜피 버퍼 크기 딸려서힘듬) 그럼 ROP쪽이나 BOF에서 리턴주소 바꿔서 하는 가능성이 커보여서 함수들 찾아보는 중 에 초반에 나온 "하아하아하아하아"그 멘트를 찾고자 STRING을 봤는데 /bin/dash를..
2020.07.07 -
HACKCTF - Basic_BOF #1
오랜만에 포너블을 잡고 첫번째로 풀이한 문제 프로그램은 만나서 가장 먼저 해야하는일은 실행시켜보는 것 보아하니 값을 입력받고 그 값이랑 또 다른값인 체크 값을 보여주는 것 같다, IDA로 코드를 까봐서 무슨 동작을 하는 친구인지를 살펴보는게 좋을 것 같다. 코드를 보면 15번째에 쉘을 주는 코드가 있기에 15번째로 가려면 어떻게 해야할지가 관건이다 (10번째 분기문 통과 & 12번째 분기문 들어오기) 1. 10번줄 통과하려면 v5 값을 다른값으로 변조해주면 된다. 2. 12번줄에서 안으로 들어오려면 v5 값을 0xdeadbeef 로 넣어야한다. 정답이다 전형적인 BOF문제이다. 여기서 BOF로 익스플로잇을 하려면 s의 버퍼크기를 알아서 모두 덮고, 그 뒤에있는 v5에 0xdeadbeef를 넣어주면 된다...
2020.07.06