막 syscall 을 쓰고싶은데 syscall 가젯이 없을경우가 있다.
심지어 릭벡터가 없어서 libc에서 못불러오는 경우가 있다.
이럴경우에 쓸수 있는 방법이 있다.
이렇게 find "\x0f\x05" 로 검색해보면 read+14 부분에 syscall 이 있는걸 볼 수 있다.
그럼 이걸 어떻게 이용할 것인가 하면 바로 read_got 부분에 있는 libc의 하위 1바이트를 0x5e 로 고쳐주는 거다.
그러면 read_plt 를 부를경우, syscall 이 콜될것이다.
그리고 1바이트 경우에는 간단하게 되고 2바이트가 넘어가면 brute force 가 조금 필요하다. 그래도 aslr 그냥 뚫는거보단 훨씬 빠르다
'Today' 카테고리의 다른 글
puts 분석 조금 (0) | 2018.02.09 |
---|---|
pyjail (0) | 2018.02.08 |
Environ, atexit (0) | 2018.02.07 |
sprintf bof (0) | 2018.01.31 |
got ptr (0) | 2018.01.29 |