
반응형
로그인단에 자동화 공격을 막기위해 캡차 시스템을 적용하는 방법이 있다.
근데 그 캡차가 단순한 문자열로 되어있을 경우 Tesseract OCR 모듈을 이용해 어느정도 우회가 가능하다.
내 웹서버에 간단하게 CAPTCHA를 구현해보았다.
새로고침(F5)를 누르면 계속 바뀌는 일반적인 캡차를 우회해보자
준비물
Tesseract.exe
https://github.com/UB-Mannheim/tesseract/wiki
GitHub - UB-Mannheim/tesseract: Tesseract Open Source OCR Engine (main repository)
Tesseract Open Source OCR Engine (main repository) - GitHub - UB-Mannheim/tesseract: Tesseract Open Source OCR Engine (main repository)
github.com
테서랙트 설치
python Tesseract
pip install pytesseract
캡차 이미지의 URL을 확인한다.
테서랙트가 설치된 경로 확인
보통 C:\Program Files\Tesseract-OCR
반응형
코드 작성
위 코드를 살펴보면 아래와 같다
from PIL import Image
import pytesseract
import urllib.request
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract' // 테서랙트 설치 경로
url = "http://192.168.1.115/CaptChaImg.jsp" // 캡차 이미지 주소
urllib.request.urlretrieve(url,"image/untitled.png") // 캡차 이미지를 다운받아올 경로
img = Image.open("image/./untitled.png") // 다운 받아온 캡차이미지 실행
config=('--oem 3 --psm 8')
// oem과 psm 옵션은 각각 이미지를 어떻게 렌더링할 것인가에 대한 옵션으로
// oem은 0~3 psm은 0~13 값을 줄 수있다 이미지마다 최적화된 값이 달라짐
text = pytesseract.image_to_string(img, config=config) // img를 OCR 인식하여 스트링으로 바꿈
print(text) // 출력
파이썬을 실행하게 되면 CAPTCHA 이미지를 스트링으로 출력해준다.
하지만 OCR 인식률이 너무 좋지않아 단순하지 않은 이미지라면 거의 불가능에 가깝다.
단순한 이미지여도 오인식률이 높은것같아 아쉽지만
취약점 점검 시에는 자동화 공격으로 잡아볼만한 취약점이라 생각된다.
반응형
'개발' 카테고리의 다른 글
[Python] 윈도우 프록시 On/Off 단축키 설정 도구 (0) | 2022.09.02 |
---|---|
[Python/Web] 파이썬 SQL injection 자동화 도구 (Blind/Time) (5) | 2022.08.29 |
[Python/Web] Selenium을 이용한 로그인 자동화 공격 (Brute Force Attack) (0) | 2022.08.25 |
[Python] 웹 자동화 및 크롤링을 위한 Selenium (0) | 2022.02.15 |