hOwDayS 선린 10720
보호되어 있는 글입니다.
사용자에게 입력을 받은 후 입력받은 값을 base64로 디코딩한다. -> 입력하고자하는 값은 base64로 인코딩을 하여 값을 넣어야됨base64로 디코딩한것을 input에 저장한다auth함수로 가서 참일 경우에correct함수를 실행시킨다 auth함수해시를 계산하여 출력한 후 f87..34까지 비교한다하지만 똑같은 값을 입력해도 계속 값이 바뀐다. -> strcmp문을 충족하게 만들기 어려움 correct 함수input값과 = deadbeef 값이 같을때 실행한다 하지만 우리는 auth함수을 충족하기 어려우므로 correct함수를 실행할 수 없다 하지만 gdb로 분석을 하는 중 leave에서 특이한 점이 걸렸다(입력값은 AAABBBBCCCC를 base64로 인코딩한 QUFBQUJCQkJDQ0ND 를입력..
fgets로 입력을 받은 다음 한글자씩 do_brainfuck 함수로 넘겨 주고 있다 do_brainfuck 함수안은 이렇다. do_brainfuck로 넘겨준 글자를 아스키코드로 비교를 하여 실행한다. p 는 tape의 주소다 여기서 어떻게 쉘을 실행시킬까 생각을 했다.got을 조작하여 쉘을 실행시키려 한다 main 함수에서는 memset을 실행후 fgets을 실행하는데 memset , fgets , putchar 각각의 got을 조작하여 쉘을 실행시킨다 memset 의 got 을 gets으로 조작하여 /bin/sh을 입력하고fgets의 got을 system으로 조작하고putchar 의 got을 main으로 조작하여 putchar을 실행시키면 쉘을 따낸다 brainfuck.py123456789101112..