본문 바로가기
반응형

Security82

pwnable.kr [Toddler's Bottle]->[shellshock] [shellshock] bash의 버그래서 쉘쇼크를 검색하니깐 위키에 아주 자세히 나타나있습니다. 환경변수로 등록해서 /bin/cat flag 로 하면 실행됩니다. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[mistake] [mistake] fd에 password 파일을 불러오는줄 알았는데 일단 실행시켜보니깐 두번 입력받습니다. 소스를 보니깐 open(0)이 되서 fd=open에서도 입력을 받습니다. 그렇다면 open에서 입력받은 값과 scanf의 입력값의 xor 1의 값이 같으면 됩니다. 무조건 입력값의 xor ^ 1이니깐 미리 python으로 계산후 입력해주면 됩니다. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[blackjack] [blackjack] 우선 코드가 무진장 길어서 프로그램을 시켜보니깐 돈을 입력받길래 그부분 소스만 확인했습니다. if문으로 입력값을 한번만 확인하길래 두번 입력하니깐 검증없이 게임이 진행됩니다. 돈을 아주아주아주 많이 넣고 이기면 플래그가 뜹니다. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[leg] [leg] 소스코드를 보면 흠... r3 r0?? arm??!! ARM이네요 소스코드를 보면 key1,2,3의 결과값이 사용자의 입력값이 되면 됩니다. ARM 조사해보니깐 pc(programcouter)의 값이 r0에 남는다고 하네요 (r0가 리턴) 그리고 pc는 사용된 주소의 +4 byte를 가진답니다. 힌트로 주어진 asm코드를 보면 pc값을 r3에 넣어주고 r3를 r0에 넣어주네요. 그렇다면 key1에서 r0에 8ce4가 들어가겠군요 key 2에서는 pc를 r3에 넣어준후, r3에 #4를 더한 후, r0에 넣어주네요 그렇다면 8d04 + 4 + 4 = 8d0c네요 마지막으로 key 3에서는 lr레지스터를 r3에 넣고 r3값을 r0에 넣습니다. lr은 함수 호출시 리턴될 값이므로 메인함수를 보면 8d.. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[input] [input] 소스코드를 보고 하나씩 풀어나가면 됩니다. stage1을 만족하기 위해 argv배열을 선언한후 argv[101] = {"/home/input/input", [1 ... 99] = "A", NULL}; 각각에 인자를 넣어준다. stage3은 char *env[2] = {"\xde\xad\xbe\xef=\xca\xfe\xba\xbe", NULL}; 로 환경변수를 선언하여 execve("/home/input/input",argv,env); 로 같이 실행시켜주면된다. stage 4는 FILE* fp = fopen("\x0a","w"); fwrite("\x00\x00\x00\x00",4,1,fp); fclose(fp); 로 구현해주면된다. 2021. 8. 11.
pwnable.kr [Toddler's Bottle]->[random] [random] key(사용자 입력값) ^ random = 0xdeadbeef 가 되면 풀린다. 중요한건 random 시드가 없다. 그렇다면 random값이 고정되어 있을듯하다. xor 연산은 A xor B = C 일때 A xor C = B 이다. 그러므로 random ^ 0xdeadbeef = key(사용자가 입력해야할 값) 이 된다. rbp -0x4 에 위치한다. rand의 값은 0x6b8b4567이다. 입력해야할 키 값은 3039230856이다. 2021. 8. 11.
반응형