Suppose we have n steps left to climb; initially n=1. If n=0 then we are done. Otherwise, we try to call step: if it succeeds then we now have n-1 steps to go; if it fails we have n+1 steps to go. You can implement this with an explicit counter.
(define (step-up)
(let loop ((n 1))
(cond ((= n 0) #f)
((step) (loop (- n 1)))
(else (loop (+ n 1))))))
You can also implement this without an explicit counter:
(define (step-up)
(unless (step)
(step-up)
(step-up)))
The justification is straightforward: if we fall down one step as a result of failure we then have to climb the step we just fell down in addition to the one we originally intended to climb.