목록WebHacking (62)
Iriton's log
email 입력란이 있길래 양식에 맞게 입력하여 send 해보았다. email이 저장되었다는데 Saved email adresses의 하이퍼링크를 누르면 어드민 권한이 필요하다고 뜬다. f12-Elements로 html 코드를 확인해 보자 어드민 권한을 얻기 위해서는 visiteur가 아닌, admin으로 쿠키를 수정해야 된다. 크롬확장자 프로그램 중에 EditThisCookie를 다운로드 받고 원하는 페이지에서 우클릭 후 클릭하면 아래와 같은 화면이 나온다. visiteur을 admin으로 바꾸고 초록 체크 버튼을 누른 후 페이지로 돌아가서 하이퍼링크를 다시 클릭하면 유효 비밀번호가 뜬다.
초기 화면은 위와 같다. flag.docx 를 다운받으려 하니 역시나... 권한이 부여되지 않았다고 한다. 그럼 test.txt라도 다운로드 받아 보자. 소스코드를 확인해 보니 test.txt의 하이퍼링크는 어떤 문구가 인코딩된 걸로 보이는 것으로 연결되어 있고 flag.docx는 애초부터 access denied 라는 경고문이 뜨게 되어 있다. 우선 디코딩 해서 어떤 문구인지 확인해 보자. ?down=dGVzdC50eHQ= 위의 문자열을 base64로 디코딩 했는데 위와 같은 결과가 나왔다. ?down=까지는 어떤 파일을 다운로드 하라는 거 같고 그 뒤의 문자열이 test.txt의 인코딩된 문자열 같다. 그럼 이 문자열을 flag.docx을 인코딩한 문자열로 바꿔서 실행하면 어떨까? 그럼 test.tx..
초기 화면은 위와 같다. 제출 버튼을 눌러보면 url에 id=admin으로 입력한 값이 뜨며, you are not admin이라는 문구가 뜬다. admin으로 접속이 되면 flag 값이 뜰 것 같다. 소스 코드에는 별다른 내용이 없었다. 혹시나 admin을 base64로 인코딩 한 값인 YWRtaW4= 으로 바꾸면 될까 싶었지만 그냥 로그인만 된다. 그래서 가장 기본적인 SQL Injection 공격을 시도했다. ?id=admin'-- 콜론으로 id 입력 코드를 임의로 끝내고 --으로 뒤의 코드를 무력화 시켜서 원래 로그인 조건에 맞지 않아도 admin으로 로그인 될 수 있게끔 하는 것이다.
STEP을 단계별로 거치지 않고 임의로 하이퍼링크를 타고 들어가면 위와 같은 문구가 뜬다. 코드 분석 param과 param2가 각각 getget, rerequest이기만 하다면 32번째 줄 조건문을 통과하면서 step2로 넘어간다. prev_step_num(입력값)이 step1_num과 일치해야 조건문에 진입할 수 있다. 전역변수 step2_num은 int.from_byte(os.urandom(16), sys.byteoreder)의 값을 저장한다. 근데 여기선 리턴값이 flag.html이 아니라 step2.html 이라서 뭔 의미가 있나 싶다. prev_step_num에 저장되는 입력값이 step2_num과 일치하고 param과 param2에 저장되는 입력값이 각각 pooost, requeeest이면 ..
코드 분석 16: 요청 폼에서 입력값을 input_val 변수에 저장한다. 17: match()함수를 이용하여 입력값(input_val) 문자열 시작이 첫 번째 인자의 정규표현식과 일치하는지를 m에 저장한다. 18-19: m이 0이 아닐 때. 즉 17 match 함수에서 일치한다는 결과가 나와야 flag값을 띄운다. 문제 풀이 정규표현식 참고 자료 08-2 정규 표현식 시작하기 [TOC] ## 정규 표현식의 기초, 메타 문자 정규 표현식에서 사용하는 메타 문자(meta characters)에는 다음과 같은 것이 있다. > 메타 문자란 원래 그 문자… wikidocs.net 'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+' 해당 정규 표현식을 풀이해 보자. * 정규 표현식은 메타 문자를 사용하여..
사이트 분석 host, port, data를 POST 하는 구조인 거 같다. 127.0.0.1 / 8000 / Hello 를 입력했더니 에러가 뜬다. 코드 분석 20. elif 문을 보면 클라이언트 측 메서드가 POST라면, 앞서 살펴본 페이지에서 입력한 값들을 host, port, data에 저장한다. /admin 에서는 조건문에 걸리지 않으면 FLAG 값을 띄운다. 즉, 조건문에 해당하지 않는 값을 전달해야 한다. /socket 을 통해서 입력한 data를 보내주니, 여기로 조건문을 고려한 값을 전달해야 한다. 참고 사이트: https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/POST POST - HTTP | MDN HTTP POST 메서드는 서버로 데이..
문제 정보 존재하지 않는 페이지 방문시 404 에러를 출력하는 서비스입니다. SSTI 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 사이트 및 코드 분석 에러 페이지와 txt 페이지 모두 입력한 페이지 경로를 그대로 출력하는 걸로 보인다. 코드를 확인해 보자. % (request.path) 를 통해 요청한 경로를 그대로 출력하는 걸 확인할 수 있다. 풀이 % (request.path)를 활용하여 flag 값을 얻을 수 있을 것이다. flag.txt를 넣으면 flag 값이 아닌 경로가 출력되므로 다른 것을 삽입해야 한다. 우선 예상대로 될지 확인해 보기 위해 {{ }}을 활용하여 원하는 값이 출력되는지 확인해 보자. 나는 {{ 2*2 }} 를 삽입해 보았다. 연..
str 값이 NULL이 아니라면 치환하는 함수들을 실행한다. replace 함수와 mid 함수가 있는 코드들을 순서대로 실행시킨 값이 admin이 되려면 입력값이 무엇이어야 하냐는 문제이다. * replace(str,"a","b"): str의 문자열에서 a는 b로 치환한다. * mid(str,1,3): str의 문자열 1번째부터 3개의 문자만 추출하여 문자열을 만든다. 여기서 문자열 첫 인덱스는 1이다. ad+min 형식으로 admin을 만들어야 할 것 같다. 2부터 2개의 문자가 ad이려면, _ad이면 된다. 즉 초기 문자는 a이면 된다. 4부터 6개까지 문자가 min이려면 aadmin이어야 하니 최종적으로 초기 문자는 ami라는 결론이 나온다. ami -----> aadmin ------> resul..