본문 바로가기

WARGAME/Pwnable.kr

(15)
PWNABLE KR CMD1 안녕하세요 IF문 안에 filter함수를 사용해서 r의 값이 증가하면 종료된다즉 argv[1]에 flag, sh, tmp같은 문자열이 있으면 안된다는 소리다환경변수를 사용해서 이 문제를 풀어보자 이렇게 풀 수 있다
PWNABLE KR lotto 안녕하세요 play함수 부분인데 for문을 보면 비교하고나서 같으면 match를 증가시키고match가 6이 되면 flag을 읽어준다하지만 여기서 동일한 숫자가 입력되면 match가 증가 될 것이다 여기서 중요한점은 char로 숫자를 입력받는다 이중에 한개를 몇번 입력하면 될것이다 성공
pwnable kr flag 안녕 먼저 패킹이 되있는지를 살펴봤는데UPX로 되있는거같아서 한번풀어봤다 UPX하기전보다 많은 문자열이 나타났는데두 번째 문자열 i will malloc()and strcpy the flag there take it.이란 문자열은 프로그램 실행시 나오는 문자열인데 그 위에 UPX문자열은 그냥 답같았다찔러보니 답맞는데...flag is 라고 써있었으면 좀더 쉽게 찾을 수 있었을텐데..
pwnable kr random 안녕랜덤값을 어떻게 찾을까...rand는 불안정하기때문에그냥 같은값이 나온다그래서 나온것이 srand인데아무튼 rand니깐 개이득 1804289383==rand값이다 코딩해보니깐 저렇게 나오는데 트레이스를 이용한 방법도 있다 아무튼 저걸 이렇게 계산하면정답이다
pwnable kr bof 안녕ㅇㅇ 소스는 이렇다key가 0xcafebabe랑 같아야하는데 스택구조를 보자면key[4]ret[4]sfp[4]buffer[44]위처럼 나오는데 52바이트를 채워주고 그 뒤에 리틀엔디안으로주소를 입력하면된다 아래처럼... 32비트 때문에 우분투를 깔았다....
pwnable kr collision 안녕하세요 메인부터 보자 인자를 입력해야하고argv[1]이 20바이트여야한다해쉬코드(0x21DD09EC)가 check_password(argv[1])랑 같아야한다즉 return res가 0x21DD09EC가 되야한다 check_password()를 보면 4바이트씩 나눠받는다나눠받은걸 res에 더한다 win10에 계산기 디자인이 괜찮다 5로 나눴다 근데 다시 5를 곱하면 4가 적다 고로 이렇게 나눠준거에서 4를 더한다 성공
pwnable kr fd 안녕하세요 소스를 보자 버퍼는 32fd는 내가 입력한 argv[1]에서 0x1234(4,660)을 뺀다len은 버퍼에서 32만큼의 문자열을 읽는다만약 버퍼가 LETMEWIN이면 flag를 cat하고else가 없으므로밑에 프린트를 출력한다 파일 디스크럽터 대상 0 표준입력 1 표준 출력 2 표준 에러 우리는 argv[1]에 입력을 해서 0으로 만들어주고LETMEWIN을 입력하면된다 4660은 16진수로 0x1234 이렇게 성공이다