기본적으로 stack pivot 문제이다. 서버와 로컬의 환경이 많이 다른지 서버익스가 안되는데, 홈피에서도 로컬익스만 되면 dm달라고 하는 걸 보변 문제가 꽤 있었나보다. 일단 이 문제에서 배운점 . system 함수를 호출할 때, (이전에 호출한 적이 없을 시) 공간을 겁나 많이 먹는다. 따라서 스택 피벗 할때에도 공간을 넉넉하게 엄청 넉넉하게 주도록 하자. from pwn import* read_leave_ret=0x4008be pop_rdi_ret=0x400b03 puts_got=0x601020 system=0x4006c0 get_index=0x400978 puts=0x4006b0 bss=0x6010e0+0x100 leave_ret=0x400a4a p=process('./wishlist') p=r..
전체 글
하고 싶은게 많은 사람입니다. 게임 개발도 하고 싶고 보안 공부도 하고싶어요 앱개발도...할 것도 없어서 HackCTF의 adult_fsb를 풀던 중, pwntool에서 제공하는 fmt로는 64비트에서 잘 안먹는거 같아서 하나 만들었다. 여러개의 주소를 덮어쓸 수 있으며, 페이로드 길이는 overwrite 하나당 72byte이다. got overwirte 같은 경우에는 4byte만 덮으면 되니, 48byte까지 줄일 수 있을 것이다. 사용방법은 pl=fsb64(8,**{str(free_hook) : one , str(initial) : 0x0068736162}) 이렇게 쓰시면 된다.
문제 오늘의 문제는 스택비벗 관련 문제이다. 이전과 달라진 점은 일단은 카나리가 없고, 대신에 Full Relro가 걸렸다는 점이다. 이 Full Relro가 적용이 되면 got영역에 쓰기권한이 사라지게 된다. bss 영역만 쓰기 권한이 생긴다. 그러면 bof로 승부를 봐야하는데.. 16byte로 대체 어떻게 공격을 할 수 있단 말인가?! STACK PIVOT? 그래서 등장한 것이 스택 피벗이다. 위에서 bss 영역에는 쓰기 권한이 아직 남아있다고 하였다. bss영역에 system 함수와 binsh의 주소를 잘 적어놓고, RIP를 bss 영역으로 옮겨준다면? 가능할지도 모르겠다! 이렇게 쓸 수 있는 공간으로 옮겨 들어가서 RTL Chaining을 하는 것을 스택피벗이라고 한다. 어떻게? 그런데 bss영역..
사실 이 글을 써도 되는지는 모르겠지만, 우리 학교 동아리 부원이 내 블로그를 볼 일은 없을 것이라 생각하고, 문제와 해설을 올려보자 한다. 만약 보신다면 살포시..! 뒤로가기를 눌러주십셔. 문제는 Format String 과 Bof 그리고 문제의 이름인 Checksum을 합쳐서 만들었다 . 하루만에 만드느라 힘들었다.. 보호기법은 Canary , NX, Partial RELRO를 걸어줬다. checksum도 문제이름이고, 함수이름에도 checksum이 많이 들어가 있는 걸 보니, checksum이 중요하게 작용하겠다. 일단은 기본적으로 dest라는 배열이 rbp-0x2C ~ rbp-0x18까지 차지하고, buf라는 배열이 rbp-0x18~rbp-0x4까지 차지한다. 두 배열은 크기가 20byte로 동일..
포맷스트링에 관한 것은 다른 곳에서 더 잘알려주기 때문에 따로 정리하지는 않겠다. 이 문제 푼다고 몇일동안 끙끙거려서 딱히 까먹을 일도 없을 것 같긴 하다. 이런 코드가 있다. 동아리 실습 문제인데, 일단 처음부터 시도해보자. 일단 방법으로는 FSB(Format String Bug)로 libc를 알아내서, printf 를 system으로 바꾸어 주면 /bin/sh를 주지 않아도, 앞에서 read로 buf에 값을 넣어주기 때문에 원하는 명령어를 실행할 수 있을 것이다. (모법답안은 이것과 다르더라. 일단 atoi함수가 어떻게 실행되는지를 찾아볼 생각을 안했다...) 일단 먼저 leak에 관한 부분이다. 모든 프로그램에 해당되는데 스택 밑부분을 보면 저렇게 libc_start_main+n에 관한 부분이 고스..
한 5일정도 Editor에 관한 기능들을 구현하는 중이고, 지금까지의 결과와 구현시 애로사항에 대하여 적어보겠다. 지금까지 Underline Span을 제외한 Italic, Bold 스타일을 주는 기능은 90%이상 구현이 완료되었다. 앞으로는 자잘한 버그만 수정하면 된다. 이유는 모르겠지만, 에뮬레이터에서는 잘되던게 실기기에서는 안되고, 실기기에서는 잘 되던게 에뮬레이터에서 잘 안되는 상황이 가끔 발생. 웃기점은 이전에는 되다가 갑자기 안되거나 이 반대의 상황이 벌어지기도 한다는 것. span을 줄때 숫자와 문자가 약간 다른 취급을 받는다는 것도 알 수 있었다. 일단 에디터의 주요 기능및 알고리즘 1. 문자열 선택후 Bold, Italic, Underline 버튼 누르면 각각 맞추어서 Span들어감 2...
Editor를 하나 만드는 중이다. 실제로 이 에디터가 지금 개발중인 앱에 들어갈지는 모르겠지만, 지금까지 git에 공개된 에디터들을 보면 모두 Html을 파싱해서 만드는 것 같지만, 본인은 웹쪽은 거의 지식이 없기 때문에 Span으로 한번 해결해 보고자 했다. 그래서 몇일간 많은 시도를 해보며 알아낸 것들을 기술 해보려고 한다. 에디터를 만드는 것은 상상외로 까다롭게 될 것 같다. 1. SPAN_EXCLUSIVE_INCLUSIVE 가 대체 뭘까? exclusive는 속성 확장 X , inclusive는 속성을 확장한다는 뜻이다. 만약 위의 ex_in 속성을 주고 뒤에 문자를 insert 하면 설정한 속성이 뒤에도 유지된다는 것. 만약 중간에 삽입하게 된다면, 속성 상관없이 주위의 속성을 따라감. 아래 ..
방학을 맞이하여앱 개발을 하고 있는데, 기록으로 남기면 좋을 내용들이 꽤나 있을 것 같아서 이렇게 글을 써보려고 한다. Shared Element Transition을 이용하려고 해보았는데, 구글 로그인 후 startActivity로 화면전환을 시도하였지만, 클래스는 로드가 되고 레이아웃은 그려지지 않는 문제가 발생하였고, 이에 대한 해결책이 이번 일지의 주된 내용이다. 위 영상이 만들고 싶은 결과물(지금은 완성이 되었지만..) 버그는 항상 앱 개발을 하면서 있지만, 이번의 짜증나는 점은 Critical한 에러가 아니기 때문에.. 즉 안드로이드 입장에서는 별 이상이 없다고 판단하는 것이다. 사실 이건 에러가 아니라 내가 잘못한 것 이였는데, 구글에 나와있는 자료를 맹신한 것이 원인이였다. 보통 나는 개발..