integer overflow
[RaRCTF 2021] write-ups
RaRCTF 2021 > - code 1) main code 전역 변수의 기본값은 0x13371337이다. 그러니까 makeshot() 함수에서 뭔가를 해서 다른 값으로 변경시켜야 할 것 같다. 2) makeshot 저기 빨간 줄은 어셈이 잘못 해석되어있다. code의 주소는 0x404068이다. 그런데 더하는 값이 0x500000라서 scanf에 0x0을 줘도 넘어버린다. 그래서 integer overflow를 이용해서 code의 주소로 맞춰주면 밑에서 0으로 값을 수정해줘서 main의 성공 조건을 통과하고 쉘을 불러올 것이다. 저 값에서 간단하게 64bit로만 맞춰주면 된다. (∵ v1이 64bit로 연산되고 있기 때문) - exploit from pwn import * # p = process('...
[pwnable.xyz] executioner v2
문제 풀이 환경 : Ubuntu 16.04 solve_pow가 더 어렵.. 📝 Analysis > 역시나 · main 이전하고 비슷한 모양새를 하고 있지만 단 16Byte만을 입력으로 받을 수 있다. 참고로 초록색으로 하이라이트 된 곳은 어셈블리어로 다음과 같다. 몇 레지스터를 제외하고는 다 0으로 초기화해주고 있다. 이후 rdx에 저장된 주소를 call 한다. · solve_pow 개인적으로 어려워서 고민하다가 다른 사람 롸업보고 푼 부분. (이미 gdb 디버깅을 통해 내가 짠 shellcode의 PoC는 해놓은 상태에서 봤다.) 사실 데이터 형 크기 고정으로 인한 로직 버그라는 건 인지하고 있었지만 계산을 어떻게 할까 고민하고 있었다. 연산 후 범위를 넘어가는 byte에 대해서는 완전히 생각지도 못하..