본문 바로가기

분류 전체보기

(267)
asisCTF2020 Invisible Write up 포너블 쉬운문제 말고 솔버 30이하 문제들만 다룰려고 한다. 이 두문제도 풀고싶지만 아직 실력이 안되서 못풀었다. 특히 사파리 문제는 브라우저 익스플로잇인거같은데 나중에 꼭 풀어보고싶다. 일단은 invisible이랑 tthttpd문제를 다룰려고 한다. 그냥 솔버 적어서 하는거다. 일단 realloc이 존재하고 free가 존재하는데 realloc으로 free가 가능하다. 이걸로 fastbin dup이 가능한데 이걸로 got_overwrite를 해서 free를 printf로 바꿔준다. 그 다음 Leak을 진행해서 다시 fastbin dup으로 system을 Leak 해준 다음에 다시 GOt_overwrite를 해주면 풀리는 문제이다 pwnable.tw realloc을 풀어봤으면 쉽게 풀리는 문제다 #!/us..
pwnable.tw de-aslr Write up 보호되어 있는 글입니다.
TokyoWesternsCTF neighbour Write up 여기를 보면 rbp-0x8에서 stream 을 꺼내서 쓰고있는 이걸 while문에서 항상 이것을 사용한다. 즉 우리는 stream쪽을 우리가 원하는 값으로 바꿀수 있게 되는데, 이제 이걸 어케하냐? 일단 들어가기전에 stderr이걸 알아야되는데 fprintf에서 stream 을 stderr이것으로 받고 있어서서버에 접속하게 되면 Leak 이 되지 않게 된다. stderr 은 __iO_file 넘버에서 가져오게되는데 결국 write(stderr->_fileno, buf, size); 이런식으로 받는다는거다 그럼 _FILENO넘버를 stdout으로 바꿔주면 출력이 될것이다 대충 부르트포싱 섞어주면 풀리는 문제다
windows exploit tech buffer overflow(non aslr, DEP off); 일단 ASLR을 끄고 DEP도 끈 상태에서 진행을 하겠다. 처음 해보는 windows exploit인데 나름 재밌게 진행했다. 일단 취약점 코드는 이런식이다. #include #include #include int main(int argc, char* argv[]) { char readbuf[2000] = {0,}; char printbuf[500] = {0,}; printf(" # text reader # \n"); if(argc!=2) { printf(" Usage : reader.exe filename\n", argv[0]); exit(1); } FILE *stream = fopen(argv[1], "r"); fgets(readbuf, 2000, stream); strcpy(printbuf, rea..
defenitCTF 2020 pwnable base64 Write up 일단 대회중에는 못푼 문제이다. 시험기간이라 공부하랴 문제풀려 할것도 참 많았다. 문제 소스는 robots.txt 를 보면 쉽게 알 수 있었다. 그래서 대회 끝나고 더 풀어보는데 어느정도 리버싱은 다 되었고 레지스터들 까지 바꾸는거 까지 성공했다. 이제 그러면 어떻게 했는지 보자 일단 여기서 보면 여기가 대충 메인이라는 느낌이 나서 함수 이름을 바꿨다 그리고 다른것도 내가 생각하는거에 맟춰서 변경했다. 그럼 이제 read를 보면 0x1000 을 입력을 받는다는것을 알 수 있다. 그럼 이제 output이 나올것이다. 그리고 대충 gdb로 디버깅을 해보았는데 encode에서 레지스터가 막 바뀌면서 터지는 것을 알수 있었다. 우리가 인코딩한 값이 레지스터에 들어가게된다. 그러면 우리는 ret쪽에서 우리가 원하..
defenitCTF 2020 pwnable error program Write up House of husk 문제이다. 일단 uaf선택지에서 house of husk가 발생하게 되는데 이걸로 대충 짜고 buffer overflow 에서 %x 로 printf해주는 쪽이 있는데 이걸로 트리거 하면된다. #!/usr/bin/env python #-*- coding: utf-8 -*- from pwn import * #p = process("./errorProgram") p = remote("error-program.ctf.defenit.kr", 7777) binf = ELF("./errorProgram") libc = binf.libc #context.log_level = "DEBUG" def alloc(idx, size): p.sendlineafter("YOUR CHOICE? : ", st..
defcon2020 pwnable_introool Write up 일단 솔버가 적은건 아마 진입장벽이 높은거 같아서 그런거 인거 같다. 일단 알고보면 되게 쉬운문제인데, 대회날에 내 상식(데프콘은 어려우니까 못풀꺼다) 떄문에 나도 손도 못댄거 같다. 일단 데프콘은 매우 어렵다는 생각이 많은데 일단 도전이라도 해보고 그 말을 해봐야 될거같다 물론 어렵긴 하지만 쉬운 문제도 있다는걸 기억해야되겠다. 일단 이 문제는 바이너리가 주어지지 않는다. 우리가 바이너리를 만들어서 서버가 실행시켜주는 문제다. 일단 NOP를 적어달라고 한다. 여기서 80 은 서버에서 0x80으로 인식한다고 되있는거같다. 그리고 size를 적으라는거 같다. 아마 NOP다음으로 나오는거니까 NOP를 얼마나 할껀지 적으라는거같다. 그 다음에는 패치할 오프셋을 적으라고 한다. 프로그램 내부를 우리가 1byte..
pwnable.tw critical_heap Write up 보호되어 있는 글입니다.