본문 바로가기

system/writeup

2016 codefate floppy floopy 2016 codegate floppy맨 처음에 floppy를 할당하는 코드이다. 다음부터는 v8이라는 변수를 통하여 floppy를 조작하게 된다. 즉, floppy struct가 스택영역에 써진다. write함수이다. data는 malloc한 곳에, description은 스택에 써준다. modify 부분의 description 입력에서 스택 오버플로우가 터진다. 위 스택 오버플로우를 통해 descrption, data 출력을 통한 leak이 가능하다. file 명령어로 봤을 떄는 dynamically linked였는데 코드를 보면 plt와 got가 존재하지 않는다. 그래서 동일한 보호 기법을 걸고 실행해서 확인해봤다. #include void main(){ printf("hello!\n").. 더보기
2017 0ctf babyheap babyheap 2017 0ctf babyheapalloc 사이즈를 4096 이하 맘대로 정할 수 있다. calloc으로 할당시 할당한 데이터 공간을 모두 0으로 초기화 시키므로 주의! 원하는 heap에 원하는 size만큼 정보를 넣을 수 있다. 아주 큰 heap overflow가 터진다. 이렇게 자유분방한 문제일수록 아직은 바로 딱 익스가 생각이 안나네유ㅜㅠ free에서 heap free 가능, dump에서 leak이 가능하다. 힙 내에 overlapping chunk를 만든 후 heap overflow를 내서 calloc으로 초기화된 chunk의 header를 다시 써준 다음 free시키고 main arena를 leak하면 된다.그 다음 unlink는 unsafe가 안되니 패스하고 house of s.. 더보기
pwnable.tw applestore 보호되어 있는 글입니다. 더보기
pwnable.tw dubblesort 보호되어 있는 글입니다. 더보기
2017 34c3 simpleGC simpleGC 2017 34c3 simpleGCtcache를 익히고 처음 풀어본 문젠데 정말 힘들게 풀었다.. 머리 터지는줄,,앞으로 이런 복잡한 바이너리는 struct와 주석, rename을 최대한 활용하여 프로그램을 정확하게 파악할 수 있도록 해야겠다. 일단 이 바이너리에는 여러가지 취약점이 존재한다. 하지만 쓸만한 취약점은 몇 개 안된다. 살펴보도록 하자. 가비지 컬렉팅을 하는 쓰레드이다. 그룹에 속해있는 사람이 아무도 없다면 free를 진행한다. user을 delete할 때 group에 속해 있는 사람 수를 줄이는 함수이다. 그룹을 새로 만들거나 변경할 수 있는 함수이다. 사실 여기서 idx의 값을 제한하지 않아 group_addr의 값까지 바꿀 수 있는데 *(ptr[idx]+2)에 입력하기 때.. 더보기
pwnable.tw calc 보호되어 있는 글입니다. 더보기
pwnable.tw silver bullet 보호되어 있는 글입니다. 더보기
pwnable.tw hacknote 보호되어 있는 글입니다. 더보기