목록분류 전체보기 (285)
tmxklab
1. 문제 확인 mistake@pwnable:~$ ls -l total 24 -r-------- 1 mistake_pwn root 51 Jul 29 2014 flag -r-sr-x--- 1 mistake_pwn mistake 8934 Aug 1 2014 mistake -rw-r--r-- 1 root root 792 Aug 1 2014 mistake.c -r-------- 1 mistake_pwn root 10 Jul 29 2014 password [ mistake.c ] #include #include #define PW_LEN 10 #define XORKEY 1 void xor(char* s, int len){ int i; for(i=0; i 0)){ printf("read error\n"); clos..
1. 문제 확인 문제에는 leg.c와 leg.asm파일이 주어진다. [ leg.c ] #include #include int key1(){ asm("mov r3, pc\n"); } int key2(){ asm( "push{r6}\n" "addr6, pc, $1\n" "bxr6\n" ".code 16\n" "movr3, pc\n" "addr3, $0x4\n" "push{r3}\n" "pop{pc}\n" ".code32\n" "pop{r6}\n" ); } int key3(){ asm("mov r3, lr\n"); } int main(){ int key=0; printf("Daddy has very strong arm! : "); scanf("%d", &key); if( (key1()+key2()+key3()..
1. 문제 확인 [input.c] #include #include #include #include #include int main(int argc, char* argv[], char* envp[]){ printf("Welcome to pwnable.kr\n"); printf("Let's see if you know how to give input to program\n"); printf("Just give me correct inputs then you will get the flag :)\n"); // argv if(argc != 100) return 0; if(strcmp(argv['A'],"\x00")) return 0; if(strcmp(argv['B'],"\x20\x0a\x0d")) return..
1. 문제 확인 [random.c] #include int main(){ unsigned int random; random = rand();// random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.\n"); return 0; } 입력 값 key값과 random값을 xor한 결과 값이 0xdeadbeef랑 같으면 된다. 2. 접근 방법 random값을 가져올 때 seed값을 정하지 않고 걍 rand()리턴 값을 가져옴 ..
1. 문제 확인 [ passcode.c ] #include #include void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("%d", passcode2); printf("checking...\n"); if(passcode1==338150 && passcode2==13371337){ printf("Login OK!\n"); system("/bin/cat flag"); } els..
1. 문제 확인 파일 다운받아서 리버싱하라고 한다. 다운ㄱㄱ 음 근데 디버깅이 실행이 안된다. 확인을 해보자 UPX로 패킹된 것 같다. 다음 링크에서 upx를 설치해주고 언패킹해보자 Release UPX 3.96 · upx/upx Please see the file NEWS for a detailed list of changes. Note: all versions are functionally equivalent, i.e. each version can handle all executable formats, so you only need the file that runs on ... github.com $wget https://github.com/upx/upx/releases/download/v3.96/..
1. 문제 확인 nc pwnable.kr 9000 [ bof.c ] #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } gets에서 bof가 발생한다. 그리고 bof파일은 32bit elf파일이다. 2. 접근 방법 unsigned int __cdecl func(int a1) { char s; //..
1. 문제 확인 col.c파일부터 확인해보자 [ col.c ] #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
1. 문제 접속해보니 flag파일이 있는데 퍼미션 걸려있어서 확인할 수 없다. 하지만, setuid가 걸려있는 fd파일과 fd.c가 보인다. [fd.c] #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc
x64dbg에서 명령어 넣는 곳에 다음과 같이 입력하면 됨 init "실행 파일 path", "parameter" 예를 들어 "C:\Users\sec\Desktop\ROPgadget --binary pwn"을 실행시키려면 init "C:\Users\sec\Desktop\ROPgadget", "--binary pwn" (중간에 쉼표 꼭 붙여야 함, 파라미터 넣는 부분 위에서는 "--binary pwn" 이 부분에 여러 개의 파라미터가 올 수 있는 상황이 있을 수 있는데 파라미터들 간에는 쉼표 안 넣어도 됨)