HackCTF(78)
-
HACKCTF - 내 버퍼가 흘러넘친다!!!
뻔한 BOF문제로 유추가 되니 일단 실행시켜보겠습니다. 별다른 출력없이 입력만 받고 끝나는걸 확인할 수 있습니다. main함수를 보면 9번째에서 gets에서 입력값에 제한을 두지 않으니 bof가 일어나는것을 확인할 수 있습니다. 그리고 여기서 함수 목록을 보면 별다른 직접 shell을 가져다 주는 함수를 발견할 수 없는데 어떻게 풀이를 할까 고민하다가 직접 쉘코드를 넣는게 가능할까 생각을 해봤더니 NX가 가능하니 쉘코드를 직접 넣으면 될거같네요. 즉 메인함수를 다시 확인하면 1. name에 쉘코드를 넣고 2. s를 bof시켜서 리턴을 name변수로 가게끔 하면 쉘을 얻을 수 있을 것 같네요. S의 크기는 보이는것처럼 0x14이고 SFP까지 고려해주면 아래와같이 페이로드를 작성할 수 있겠네요. 1 2 3 ..
2020.07.09 -
HACKCTF - Hidden
무언가 숨겨져 있다고 한다. command + option + u 로 풀이하는 문제로 예상이 되는데. 들어가보니 5번째 파일에 플래그가 있다고 하네요. 아무거나 눌러보면 get 방식으로 /?id=3 이라고 되어있으니 /?id=5로 바꾸면 바로 풀 수 있을 것으로 보입니다.
2020.07.08 -
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 - /
"/" 이라고 하니까 아마 파일 디렉터리 관련해서 flag를 읽을 수 있을 것으로 보인다. 접속해서 보면 위와 같은 화면이다. 보통 robots.txt에 플래그가 들어있는데 들어가보니 /robot_flag/ 로 들어가라 해서 들어가보면 위와 같이 확인 가능하다.
2020.07.07 -
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