LiveOverFlow

· LiveOverFlow
printbuffer vuln(target 값을 0x01025544로 맞춰야하고, target 주소는 0x080496f4) 버퍼 값이 어디에 저장되는 지 알았다. 이제 target 값을 0x01025544로 맞춰야한다. 앞에 target 주소(4Byte) + %08x*11 (11*8=88Byte) = 92Byte 만큼을 16930116에서 빼고 공백+문자열로 넣어주면 된다. => %16930024x%n 계산하기 쉽게 앞에 AAAA는 빼고 바로 target 주소 넣었다. 위에서 계산한 것 처럼 공간의 크기가 0x5c(92Byte) 인 것을 볼 수 있다. 그래서 이렇게 페이로드를 작성했지만 Segmentation fault만 나오고 풀리지 않아서 검색해봄. 왜인지는 모르겠지만 위처럼 값 모두 불러온 다음 %..
· LiveOverFlow
main vuln (보니 0x80496e4가 target 주소인 듯 하다.) 스택에 있는 값 4개 출력했더니 앞에 AAAA 입력해줬던 41414141이 나왔다. 5번째에 target 주소 저장되는 것을 볼 수 있다. %n은 앞에 나온 공간 갯수를 주어진 주소에 저장하는 것이므로 64바이트를 맞춰주었다. payload : (python -c 'print "AAAA" + "\xe4\x96\x04\x08" + "%08x%08x%08x%32c%n"') | ./format2
· LiveOverFlow
main vuln vuln 함수를 보니 target 주소는 0x08049638인것같다. 그리고 hint에 나온 objdump 명령어 통해서도 구할 수 있다. 이제 target에 어떻게 접근할 것인지 봐야한다. 메인쉘로 돌아와 ./format $(python -c 'print "AAAA" + "%x."*200)를 입력해보니 입력한 AAAA인 41414141이 안보인다. 그래서 숫자를 조금씩 줄이며 찾아봤다. 그전까진 stack에서 깨져서 나왔지만 150까지 내려서야 완전한 414141을 찾을 수 있었다. (깨지면 안되는 것은 AAAA 뒤에 바로 이어서 target 주소를 넣어 앞의 숫자들을 해당 주소로 넣어주기(%n) 위함이다.) 최대한 끝으로 보내 몇번째인지 세기 쉽게 했지만 안깨지고 잘 나오는건 최대가..
· LiveOverFlow
이전 문제들과 비슷한 BOF 문제같지만 input이 10바이트 미만이어야 한다. 스택 구조를 보니 buffer[64] + deadbeef를 넣어주면 통과될 것 같다. 하지만 앞서 말했든 10바이트를 넘지 않아야 해서 %64c(->63개의 공백과 하나의 문자열로) 문자열말고 공백으로도 채워줬다.
기넌
'LiveOverFlow' 카테고리의 글 목록