flag
[pwnable.kr][Toddler] lotto 문제풀이
lotto #include #include #include #include unsigned char submit[6]; void play(){ int i; printf("Submit your 6 lotto bytes : "); fflush(stdout); int r; r = read(0, submit, 6); printf("Lotto Start!\n"); //sleep(1); // generate lotto numbers int fd = open("/dev/urandom", O_RDONLY); if(fd==-1){ printf("error. tell admin\n"); exit(-1); } unsigned char lotto[6]; if(read(fd, lotto, 6) != 6){ printf("err..
[pwnable.kr][Toddler] coin1 문제풀이
coin1 문제를 요약하면 동전이 있는데 진짜 동전은 무게가 10이고, 가짜는 9이다.한번 실행되면 랜덤한 동전 개수(N)와 서버에게 물어볼 수 있는 카운트 수(C)가 설정되어 출력된다.만약 '0 1' 이라고 해서 보내면 서버는 첫번째 코인과 두번째 코인의 무게를 합한 값을 대답해준다.하나의 세트에는 1개의 가짜 동전이 존재하고, 동전을 찾으면 다시 새로운 세트가 만들어 지고 또 다시 가짜 동전 1개를 찾아야 한다.이런식으로 총 100개의 가짜 동전을 찾으면 되는데, 문제는 주어진 시간은 60초이다.따라서 자동화코드를 만들어서 찾는 방법 밖에없다. 가짜 동전을 최소한의 질의로 찾는 알고리즘부터 만들어야 한다.예를들어 서버로부터 N=400, C=10이라는 값을 받았다고 가정했을 때,코인을 0~200, 20..
[pwnable.kr][Toddler] passcode 문제풀이
PASSCODE keyword : GOT Write, fflush #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 ..
[pwnable.kr][Toddler] flag 문제풀이
Flag 해당 바이너리를 다운받아 실행해보면 root@kali:~/BoB7/pwnable/flag# ./flag I will malloc() and strcpy the flag there. take it. 위와 같이 뜬다. root@kali:~/BoB7/pwnable/flag# checksec flag [*] '/root/BoB7/pwnable/flag/flag' Arch: amd64-64-little RELRO: No RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x400000) RWX: Has RWX segments Packer: Packed with UPX checksec로 확인해보면 UPX로 실행압축 되었음을 알 수 있다. root@kal..
[Anti-DOS]SYN Cookie
SYN Cookie Syn cookie란 ? TCP 3-way-handShake TCP로 세션이 생성 되려면 아래와 같은 기본적인 3-way-handshake를 거친다. SYN Flooding 공격SYN Flooding 공격은 3-way-handshake의 취약점을 이용한 공격으로 공격대상 시스템의 TCP연결 자원(backlog queue)을 소진시켜 외부로부터 TCP 연결 요청을 받을 수 없는 상태로 만드는 서비스 거부 공격기법 이다. 경우는 아래와 같다.공격자가 SYN 패킷을 보내면 서버는 SYN/ACK 패킷을 보내고 SYN패킷에 대한 세션을 생성하고 응답을 기다린다. 따라서 공격자가 수많은 SYN패킷으를 보내면 수만은 세션을 생성하고 기다리게되고, 정상적인 사용자가 서버와 세션을 맺으려고 하면 이미..