read_url 함수안에 driver.get(f'http://127.0.0.1:8000/csrf?csrf={urllib.parse.quote(url)}') 이구문에서 csrf 를 이용해서 admin_notice_flag를 푸는거 맞나요?
저는 read_url 함수에 저 구문에 url을 <img src=1 onerror="http://host1.dreamhack.games:8349/admin/notice_flag?userid=admin"> read_url 함수안에 driver.get(f'http://127.0.0.1:8000/csrf?csrf={urllib.parse.quote(url)}') 이구문에서 csrf 를 이용해서 admin_notice_flag를 푸는거 맞나요?
저는 read_url 함수에 저 구문에 url을 <img src=1 onerror="http://host1.dreamhack.games:8349/admin/notice_flag?userid=admin">이렇게 넣어서 해봤는데 이렇게 한이유는 read_url 함수안에서만 127.0.0.1이 되어서 이함수안에서 만 admin_notice_flag함수의 request.remote_addr구문이 127,0,0,1이되어서 true가 될거라고 이해했는데 이게맞나요?
네 그렇게 접근 하는 거 맞습니다.
<img src=1 onerror=“http://host1.dreamhack.games:8349/admin/notice_flag?userid=admin”>
는 'on'이 있어서 필터링에 걸립니다.
app.py를 보면
@app.route('/csrf')
def csrf():
csrf = request.args.get('csrf', '').lower()
xss_filter = ['frame', 'script', 'on']
for _ in xss_filter:
csrf = csrf.replace(_, '*')
return csrf
보시듯이 필터링된 단어는 *로 치환됩니다.