일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rev-basic-3
- coin1
- pwnable.kr
- sint
- 포너블
- sd카드 리더기
- out_of_bound
- 코드엔진 베이직 13
- 드림핵
- L18
- off_by_one_000
- rev-basic-6
- rev-basic-0
- rev-basic-5
- basic_exploitation_001
- RCE
- basic_exploitation_000
- L17
- L16
- rev-basic-1
- 코드엔진 베이직
- CodeEngn
- rev-basic-7
- Dreamhack
- Basic
- rev-basic-2
- rev-basic-4
- L15
- Pwnable
- off_by_one_001
- Today
- Total
목록전체 글 (52)
서브웨이
아이가 게임을 하고싶답니다. 일단 접속해보죠. 게임이 진짜 게임일 줄은 몰랐네요... 대충 읽어보니 코인중에 가짜 코인이 하나 있고 진짜코인은 무게가 10, 가짜는 무게가 9랍니다. 그래서 무게를 비교해가면서 정해진 횟수 안에 가짜코인을 찾는것을 100번 반복하는데 이것을 1분안에 해야합니다. 그냥 스크립트를 짜라는 얘기네요. 일단 해봅시다. 그냥 간단하게 반반씩 나눠가며 확인을 하면 되지 않을까 싶습니다. # coding: utf-8 from pwn import * r = remote('pwnable.kr',9007) r.recvuntil("- Ready? starting in 3 sec... -") for k in range(100): r.recvuntil("N=") num = int(r.recvun..
bash에 대해 뭔가 놀라운 소식이 있답니다. 참고로 bash는 쉘의 종류 중 하나 입니다. 리눅스, mac OS에서 기본으로 사용하는 쉘이기도 합니다. 일단 접속해봅시다. 이런 파일들이 있습니다. 일단 플래그와 shellshock 파일을 소유한 그룹이 shellshock_pwn으로 같다는 것을 유의하시면 됩니다. 일단 소스코드를 봅시다. #include int main(){ setresuid(getegid(), getegid(), getegid()); setresgid(getegid(), getegid(), getegid()); system("/home/shellshock/bash -c 'echo shock_me'"); return 0; } 일단 코드는 상당히 짧습니다. 먼저 setresuid는 rea..
자 읽어보니 뭔가 실수에 관한거랍니다. 힌트도 있습니다. 연산의 우선순위를 생각하라네요. 일단 접속해봅시다. 이렇게 4개의 파일이 있네요. 일단 소스코드부터 봅시다. #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)){ pr..
자 일단 뭘 다운받으랍니다. 일단 다운받아봅시다. #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 ){ printf("..
자 일단 설명이 간단합니다. 일단 세개의 파일이 있습니다. 먼저 소스코드를 봅시다. #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[..
오랜만입니다. 오늘 풀어볼 문제는 random입니다. 이름을 보아하니 뭔가 어려워보입니다. 일단 접속해봅시다. 일단 소스코드를 봅시다. 랜덤한 값을 지정해줄때 그냥 rand를 썼네요. 저렇게 되면 매번 같은 값이 나오게 됩니다. 이러한 경우를 방지하려면 srand 함수로 시드값을 달리한 뒤 rand를 사용해야합니다. 그럼 일단 디버깅을 해봅시다. 13번째 줄에 중단점을 걸어서 반환값을 확인해봅시다. 간단하게 0x6b8b4567이라는 값이 반환되었음을 알 수 있습니다. XOR의 성질을 이용하여 간단하게 값을 구해봅니다. 10진수 값을 입력하면 되겠죠? 어렵지 않았네요.