bruteforce oneshot when bof
해당 writeup을 보고 느낀건데
1/4096의 확률로 익스하는 것은 충분히 "합리적"이다였다.
라고 한다. 핵심 아이디어는 bof로 RA를 덮어쓸 수 있을때 다른 정보가 하나도 없다면, 그냥 단순히 libc_start_main_ret 값과 one_gadget 의 오프셋을 잘 비교해서 RA의 하위 몇바이트만 one_gadget 의 주소로 덮는것이다.
정말 충격적인 공격방식인데 지금 생각을 해보면 정말 사기이다. 이거
그냥 별로 공격에 대한 페이로드 짤 필요없이 정말 강력한 공격이 가능함
근데.. 더 충격적인 것은
1/4096 이 확률이 맘에 안든다면, 스택 아래에 있는 쓰레기 값들로
더욱 가까운 곳을 찾으면 확률이 더더욱 줄일수 있다는 것.
이럴수가.. 더가까운 주소가 있다면 더 조금만 one_gadget 의 오프셋을 덮어서 확률을 확연히 줄일 수 있다.