일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BOF
- SQL Injection
- 뉴스클리핑
- buffer over flow
- webhacking
- Python
- Next.js
- Nop Slide
- 웹해킹
- Shadow 동아리
- 어셈블리어
- x64dbg
- ftz
- writeup
- requests
- RITSEC
- termux
- PWN
- 리눅스
- 버퍼오버플로우
- 보안뉴스
- ctf
- reversing
- RITSEC CTF 2019
- Hackerschool
- NewsClipping
- Linux
- CodeEngn
- 리버싱
- HackCTF
- Today
- Total
목록전체 글 (113)
Jaeseo's Information Security Story

09.exe - StolenByte를 구하시오 Ex) 75156A0068352040 일단 PE 분석을 해본다. 그 결과 UPX로 Packing 되어 있는 것을 볼 수 있다. UPX로 UnPacking 한다. 이제 프로그램을 실행하여 분석을 한다. Upx로 Unpacking를 하고 나니 문자열이 다 깨지고 오류 메세지를 출력하고 있다. Upx에서 StolenByte를 일부 가지고 있어서 오류가 나는 것으로 예상이 된다. 그래서 이번에는 upx Unpacking을 진행하지 않고 디버깅을 진행하도록 한다. 일단 x32dbg로 분석을 한다. 실행을 해보면 처음 upx로 unpacking을 진행하는 모습을 볼 수 있다. Upx로 unpacking을 하면서 계속 반복을 하는 모습을 볼 수 있는데 F8과 Break ..

07.exe - OEP를 구하시오 Ex) 00400000 OEP 코드를 알기 위해 PE 분석을 해본다. 현재 UPX로 Packing이 되어있어 정상적인 OEP를 알 수가 없다. OEP를 알기 위해 UPX로 Unpacking를 해준다. 그리고 ExeinfoPE를 통해 다시한번 분석해본다. EP는 00012475 라는 것을 알게 되었다. 또한 Image Base는 01000000인 것을 알 수 있다. OEP는 Image Base + EP 하여 구한다. 정답: 01012475

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 ..