목록WebHacking/WarGame (65)
Iriton's log
사이트 분석 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..
우선 문제 파일을 먼저 다운로드 받아 보자. html 파일을 열어 보면 위와 같은 화면이 나온다. 첫 번째 줄이 flag이고 두 번째 줄은 encoding, decoding에 관한 힌트인 거 같다 이제 첨부된 링크로 가 보자 툴은 이렇게 생겼다 Operations에서 Recipe를 추가한 후에 html에서는 Rail Fence - Base64 - ROT13 순서로 힌트를 주길래 그대로 해 봤더니 플래그가 뜨지 않았다. 그래서 그 반대로 recipe 조합을 했더니 flag가 나왔다.
보호되어 있는 글입니다.
문제 페이지 분석 admin이 작성한 FLAG 파일을 읽어내야 한다. Write 할 때 Secret check를 하면 FLAG 글처럼 접근할 수 없나 보다. 크롬 개발자모드-Network에서 한 게시물의 데이터가 어떻게 주고받는지 살펴보자. /api/board/{no}에서 GET Method를 통해 응답을 받는 구조인 거 같다. FLAG의 no는 알려지지 않았으니 우선 /api/board로 가봐야겠다. "_id": null 이라고 한다. 이때부터는 MongoDB의 ObjectID 개념을 알아야 한다. 참고 사이트 https://www.mongodb.com/docs/manual/reference/method/ObjectId/#methods ObjectId() — MongoDB Manual Docs Home..
문제 페이지에 접속하면 소스 코드를 볼 수 있게끔 하이퍼 링크가 있다. 맨 밑을 보면 blocked accounts로 guest/ blueh4g 계정이 있다. 중간에 조건문을 보면 해당 계정 아이디만 막아 뒀다. guest로 login 시도를 하니 blocked이라고 뜬다. 쿼리문을 변조해야 하나 싶었지만 조건문을 좀 허술하게 해둔 거 같아서 Guest로 입력하여 로그인을 시도해 봤다. 엥... 해결... mysql은 대소문자를 구분하지 않아서 guest로 인식하는 것이었다.
참고 문제풀이 [Dreamhack/Wargame] Lv.1 crsf-1 문제 페이지 분석 vuln(csrf) page (/vuln?param=) 파라미터 값을 출력한다. memo(/memo?memo=hello) 접속할 때마다 hello를 누적해서 출력한다. notice flag (/admin/notice_flag) admin 권한이 없어서 flag값을 보지 못한다. eunginius.tistory.com *crsf-1 문제와 비교하여 다른 점만 분석하고 풀 것이기에 위 풀이를 참고할 것. 코드 분석 1번 문제랑 다른 점은 memo 대신 login 페이지가 생겼다는 것이다. admin으로 로그인하면 flag를 띄워주나 보다. 문제 페이지에 나와 있지 않은 경로가 보인다. /change_password (이..