본문 바로가기

프로그래밍/Python

C++과 Python으로 XSS 취약점 자동 분석 툴 만들기 (1)

MFC로 개발하였습니다.

 하나도 모르는데 무작정 시작함....

아직 배울게 많은 학생이라 이상하고 비효율적인 코드들이 많습니다... 이해해주세요...

C++로 개발을 시작해서 삽질을 엄청했다... 결국 파이썬으로 만들어놓고 C++에서 불러왔다.

 

첫 번째로 인터넷 연결을 확인한다. 

C++에서 InternetCheckConnection 함수를 이용하였다. 구글로 한 이유는 딱히 없다. 구글은 서버가 죽을 일이 없을 거 같아서..?

c++
닫기
#include "WinInet.h" #pragma comment(lib,"WinInet.lib") . . . if (!InternetCheckConnection(L"http://google.com", FLAG_ICC_FORCE_CONNECTION, NULL)) { ​​​​MessageBox(L"No Internet Connection"); ​​​​EndDialog(WM_CLOSE); ​​}

 

만약 인터넷 연결이 된다면, Github에서 XSS Cheat Sheet의 마지막 업데이트 날짜를 불러온다.   gist.github.com/kurobeats/9a613c9ab68914312cbb415134795b45

 

XSS Vectors Cheat Sheet

XSS Vectors Cheat Sheet. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

python
닫기
import requests from bs4 import BeautifulSoup if os.path.isfile('localDate.txt'): ​​​​os.remove('localDate.txt') ​​​​ res = requests.get('https://gist.github.com/kurobeats/9a613c9ab68914312cbb415134795b45') soup = BeautifulSoup(res.content, 'html.parser') data = soup.find('time-ago',{'class': 'no-wrap'}) f = open('localDate.txt','w') f.write(data.get_text()) f.close()

 

이렇게 만들어진 localDate.txt를 또 C++에서 불러온다...

c++
닫기
WinExec("localDate.exe", SW_HIDE); ifstream CheckStatus; char LocalDate[20] = { 0, }; char TextOutput[40] = "Cheat Sheet Last Updated : "; CheckStatus.open("localDate.txt"); if (CheckStatus.is_open()) ​​CheckStatus.getline(LocalDate, 100); strcat(TextOutput, LocalDate); SetDlgItemText(IDC_STATIC1, ConverCtoWC(TextOutput)); CheckStatus.close();

 

실행 결과