728x90
반응형
서론
꽤나 많은 문제들에서 random 함수를 사용한다.
더불어 seed는 time인 경우가 대부분이다.
결국 이를 가져와서 rand 값을 일치시켜줘야하는데, 이를 위한 python 코드이다.
Code
from ctypes import CDLL
libc = CDLL('/lib/x86_64-linux-gnu/libc.so.6')
libc.srand(libc.time(0))
rand = libc.rand()
print(rand)
참고사항
문제에서 srand의 사용 시점과, rand의 사용 횟수가 가장 중요하다.
예를 들어 srand가 특별한 delay 없이 사용된다면 아무 문제 없지만,
sleep()과 같은 함수로 delay를 강제로 주거나
서버와 로컬의 연결이 불안정하다면 time 값이 변경될테고, 이로 인해 출력 결과가 달라진다.
페이로드도 마찬가지로 앞, 뒤에 sleep()을 어느정도 주어 보정이 가능하다.
더불어 rand 함수의 사용 횟수도 중요하다.
문제 내에서 rand 함수가 여러번 사용되거나 특정 조건에서만 사용된다면 이를 맞춰줘야한다.
728x90
반응형
'Tips & theory' 카테고리의 다른 글
libc database. local에서 사용해보자. (0) | 2023.01.07 |
---|---|
dreamhack 문제 upload + git 기본 사용법 (0) | 2022.12.21 |
for "민규" (0) | 2022.11.27 |
docker gdb attach & pid로 gdb attach (0) | 2022.11.25 |
memory leak 관점에서의 format string bug의 유용성. (2) | 2022.11.23 |