일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- NewsClipping
- BOF
- CodeEngn
- reversing
- Nop Slide
- Linux
- Python
- HackCTF
- Hackerschool
- SQL Injection
- PWN
- RITSEC
- webhacking
- 리눅스
- 리버싱
- Shadow 동아리
- buffer over flow
- Next.js
- 웹해킹
- x64dbg
- RITSEC CTF 2019
- 버퍼오버플로우
- ftz
- 어셈블리어
- writeup
- requests
- ctf
- 뉴스클리핑
- termux
- 보안뉴스
- Today
- Total
목록PWN (12)
Jaeseo's Information Security Story

FTZ - level20 - WriteUp level20:we are just regular guys 일단 hint 파일을 봅니다. [level20@ftz tmp]$ cat ../hint #include main(int argc,char **argv) { char bleh[80]; setreuid(3101,3101); fgets(bleh,79,stdin); //입력값을 bleh에 받지만 최대 79까지만 받아서 BOF가 불가능 printf(bleh); //하지만 printf의 포맷스트링 취약점을 통한 공격이 가능하다. } 일단 이문제를 풀기전에 알아야 하는 정보가 있습니다. ctors, dtors 영역 이 위의 두가지 영역의 특징아래와 같습니다. .ctors (constructor) 은 main() 전에 ..

FTZ - level19 - WriteUp level19:swimming in pink 일단 hint를 봅니다. [level19@ftz level19]$ cat hint main() { char buf[20]; gets(buf); printf("%s\n",buf); } 문제를 보니 ret 부분에 shell코드의 주소를 덮은 다음 리턴을 시켜 shell를 실행 시키면 되는 문제로 보입니다. (gdb) set disassembly-flavor intel (gdb) disassemble main Dump of assembler code for function main: 0x08048440 : push ebp 0x08048441 : mov ebp,esp 0x08048443 : sub esp,0x28 0x0804..

FTZ - level18 - WriteUp level18:why did you do it 일단 hint를 확인 합니다. [level18@ftz level18]$ cat hint #include #include #include #include void shellout(void); int main() { char string[100]; //입력값을 받는 변수 int check; int x = 0; int count = 0; //string변수 인덱스 변수 fd_set fds; printf("Enter your command: "); fflush(stdout); while(1) { if(count >= 100) //count가 100이상이면 if 걸려서 더이상 공격 불가 printf("what are you ..

FTZ - level17 - WriteUp level17:king poetic 일단 hint 파일을 확인합니다. [level17@ftz level17]$ cat hint #include void printit() { printf("Hello there!\n"); } main() { int crap; void (*call)()=printit; char buf[20]; fgets(buf,48,stdin); setreuid(3098,3098); call(); } 이번에는 printit의 주소만 가져오고 printit 함수만 존재하는 것을 볼 수 있다. 일단 주소를 불러 온다는 점에서 shellcode를 이용하여 공격을 하면 될것 같다. (gdb) set disassembly-flavor intel (gdb) ..

FTZ - level16 - WriteUp level16:about to cause mass 일단 hint를 봅니다. [level16@ftz level16]$ cat hint #include void shell() { setreuid(3097,3097); system("/bin/sh"); } void printit() { printf("Hello there!\n"); } main() { int crap; void (*call)()=printit; char buf[20]; fgets(buf,48,stdin); call(); } 소스를 보면 call에 printit의 주소를 가져온다음 입력을 받고 call를 부르는 것을 볼 수 있는데 이때 printit의 주소를 shell의 주소로 덮어 쓰면 되는 문제 같다..

FTZ - level15 - WriteUp level15:guess what 일단 hint파일을 봅니다. [level15@ftz level15]$ cat hint #include main() { int crap; int *check; char buf[20]; fgets(buf,45,stdin); if (*check==0xdeadbeef) { setreuid(3096,3096); system("/bin/sh"); } } [level15@ftz level15]$ level14의 문제와 거의 유사하지만 이번에는 check가 포인터로 해서 참조를 하는 모습을 볼 수 있습니다. (gdb) set disassembly-flavor intel (gdb) disassemble main Dump of assembler ..

FTZ - level14 - WriteUp level14:what that nigga want? 일단 hint 파일을 봅니다. 레벨14 이후로는 mainsource의 문제를 그대로 가져왔습니다. 버퍼 오버플로우, 포맷스트링을 학습하는데는 이 문제들이 최고의 효과를 가져다줍니다. #include #include main() { int crap; int check; char buf[20]; fgets(buf,45,stdin); if (check==0xdeadbeef) { setreuid(3095,3095); system("/bin/sh"); } } tmp에 소스코드를 이용하여 디버깅용 프로그램을 만듭니다. (gdb) set disassembly-flavor intel (gdb) disassemble main..

Uplink 문제구분 난이도 작성자 Pwn 상 JaeseoKim 문제 내용 문제 풀이 일단 주어지는 주소를 통해 접속을 해봅니다. root@kali:~# nc uplink.ritsec.club 8001 G�� @�� @�� @�� @�� @�� @�� @�� @�� @�� @�� @��root@kali:~# 접근을 하자 알 수 없는 문자만 출력을 해주는 모습을 볼 수 있습니다. 이때 한번 hex 형태로 받아서 봅니다. root@kali:~# nc uplink.ritsec.club 8001 | xxd 00000000: 0847 bfff 2040 80c2 2040 80c2 2040 80c2 .G.. @.. @.. @.. 00000010: 2040 80c2 2040 80c2 2040 80c2 2040 80c2..