분류 전체보기
-
2018 CCE Qual Writeup - note [pwn]System/CTF 2018. 10. 2. 05:16
[ Binary Info ]# Binary : 64Bit ELF# Full RELRO# No Canary# NX Enable# PIE Enable [ Binary Execute ]- 바이너리를 실행하면, 다른 note 문제들 처럼 추가/삭제/보기/실행 메뉴를 출력해준다.IDA로 정적분석을 해보자 [ 정적분석 ]- 바이너리의 main( )부분이며, Hidden Menu는 따로 존재하지 않는다. [ Delete_note( ) ]- add_note( )에서 malloc( )으로 동적할당을 하지만, Delete( )때 Free를 하지 않는다. 따라서, Use After Free를 이용한 문제는 아닌 것 같다. [ Execute_note( ) ]- 취약점은 Execute_note( )에서 발생한다.Execute_..
-
CTF Tools 정리System/CTF 2018. 9. 30. 04:45
[ One gadget ] Usage : one_gadget [libc_binary]libc에서 한번에 쉘을 따주는 위치의 Offset을 구해서 출력해준다.rax == NULL / [rsp+0x30] == NULL과 같은 제약조건들만 맞춰주면 된다. RET에 libc_base+oneshot_offset값을 덮어주면 쉘이 짠! [ XROP ] Usage : xrop -r [arch] -b [bit] [Binary] ARM, PPC, MIPS 등의 Gadget들을 찾아주는 툴이다.ELF에서의 ROP_gadget이라고 보면 된다. [ qemu ]Usage : ./qemu-arm-static -L [Library_Directory] [Binary]ARM바이너리를 ELF아키텍쳐에서 실행 가능하게 해주는 툴이다.c..
-
[ IP Camera Dos Attack (CVE-2018-6479) ]IoT/IP Camera 2018. 9. 30. 04:00
한 동안 IP Camera분석을 못하고 있다가, 예전에 봐두었던 CVE를 재현해봤다.뭐 재현이랄것도 없지만. CVE Number는 2018-6479이며 올해 초에 등록된 CVE이다. github : https://github.com/dreadlocked/netwave-dosvulnerability Attack Vector는 네크워크이며방대한 양의 POST 데이터를 요청할 때 서비스가 중단되는 공격(Denial of Service)이다. ※ 해당 글에는 CVE 재현에 사용되는 IP Camera 제품에 대해서 어떠한 정보도 제공하지 않았습니다. [ PoC ]1234567891011121314151617import stringimport httplibimport urllib2 host = "192.168.1...
-
[ Rookiss ] loveletterSystem/Pwnable.kr 2018. 8. 26. 05:10
이번에 새로 추가된 Rookiss문제다.포인트는 제대로 잡았는데, 제대로 활용을 못해서 굉장히 오래 걸렸다..ㅠㅠ 우선 문제 취약점은 로직버그로 생긴 BoF이며, Command Injection을 이용해서 쉘을 따내는 문제다.Canary때문에 RET를 직접 덮을 수는 없으며, Size 공간 Overflow가 가능해서 이 부분을 공략하면 되는 문제다. Command Injection으로 쉘 명령어를 실행시킬 수 있는 환경을 조성했더라도 Input의 dummy값까지 명령어로 인식해버려서 이 부분까지 신경을 써줘야 한다. 따라서 STAGE 1 - BoF로 Command Injection으로 쉘 환경 조성하기 STAGE 2 - Input dummy값 처리하기 로 나눠서 Write up을 작성하도록 하겠다. [ ..
-
[FTZ Level19 풀이]System/FTZ 2018. 2. 17. 01:20
[Level19 Code]12345678#include void main(){ char buf[20]; gets(buf); printf("%s\n",buf);} cs코드는 굉장히 심플하다.gets( )에서 BOF취약점이 발생하니까, 이 점을 이용해서 RTL공격으로 쉘을 따도록 하겠다.RTL에 대해서는 블로그에 정리해두었으니, 참고하길 바란다.[RTL 정리글] RTL공격을 하기 위해서는 System( )주소, /bin/sh의 문자열 위치, RET까지의 offset을 구해야 한다.우선 attackme가 사용하는 libc버전을 확인해보자 [ldd attackme]ldd명령어로 libc버전이 /lib/tls에 위치한 so.6버전임을 알아냈다.libc버전을 알아냈으니 이제 System( )와 /bin/sh의 문자..
-
[FTZ Level18 풀이]System/FTZ 2018. 2. 17. 00:44
[Level18 Code]123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include #include #include #include void shellout(void);int main(){ char string[100]; int check; int x = 0; int count = 0; fd_set fds; printf("Enter your command: "); fflush(stdout); while(1) { if(count >= 100) printf("what are you trying to do?\n"); if(check == 0xdeadbeef) shel..
-
[FTZ Level17 풀이]System/FTZ 2018. 2. 16. 20:20
[Level17 Code]123456789101112131415#include void printit() { printf("Hello there!\n");} main(){ int crap; void (*call)()=printit; char buf[20]; fgets(buf,48,stdin); setreuid(3098,3098); call();} csLevel16과 흡사한 문제지만, 이번에는 쉘을 실행시켜주는 함수가 없다.그래서 나는 EGGShell로 환경변수를 등록한 후, 환경변수의 주소를 Call( )에 넘겨주는 식으로 쉘을 땄다. [Eggshell Code]12345678910111213141516171819202122232425262728293031323334353637383940414243444..
-
[FTZ Level16 풀이]System/FTZ 2018. 2. 16. 20:06
[Level16 Code]12345678910111213141516171819#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();} cs코드를 보면 call( ) printit( )를 저장해서 call( )가 실행되면 printit( )함수가 실행되도록 되어있다.그리고 위에 shell( )는 쉘을 실행시켜준다. 따라서, 우리는 printif( )의 주소가 저장되는 스택에 shell( )의 주소를 저장해서call( )..