질문

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가 될거라고 이해했는데 이게맞나요?

#web
작성자 정보
답변 2
avatar
Pocas
워게임 고인물

네 그렇게 접근 하는 거 맞습니다.

2020.07.17. 18:32
2dedce
워게임 고인물

<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

보시듯이 필터링된 단어는 *로 치환됩니다.

2020.07.22. 06:39
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기