본문 바로가기

분류 전체보기

(312)
Carve Party [WEB LEVEL1] 호박을 10000번 클릭해야 하는데 마우스로 하기에는 오래 걸린다. 개발자 모드로 소스를 보면 jack-target을 클릭하는 코드를 확인할 수 있다. Console에서 while 반복문을 사용해 jack-target를 9999번 클릭해 준다. 웹 브라우저에서 10000번이 클릭된 걸 볼 수 있다.
CSRF-2 [WEB LEVEL1] 를 입력했지만, alert(1) 이 출력이 되었다는 건 script는 *로 필터링 되었고 는 공백으로 필터링된 거 같다. 더보기 frame, script, on는 * 로 필터링 되어 있음 script 구문을 입력하면 good이라는 출력문이 나온다. 더보기 세션 id는 admin이고 세션 저장소에 저장하는 거 같다. 로그인하는 페이지이다. 더보기 ID는 admin이고 PW는 모르는 상황이다. 소스코드를 더 보면 chage_password 함수가 있는 걸 확인할 수 있다. 문제 풀이 방식은 CSRF가 실행되는 곳에서 img 태그를 사용해 change_password페이지로 넘겨서 PW를 바꾸면 되는 거 같다. 페이로드를 작성해 CSRF 공격을 해준다. admin의 PW가 변경이 되어서 admin으로 로그인을..
Command-injection-1 [WEB LEVEL1] 8.8.8.8의 ping을 보내면 응답값이 출력되는 문제이다. ping의 응답 값이 결과로 출력이 된다. ; (세미콜론)을 사용해 실행시키려고 했는데, "요청한 형식과 일치시키세요" 구문이 출력이 되면서 실행이 안된다. 웹 브라우저에서 막고 있다고 생각해 개발자 모드에 들어가 보니 pattern이라는 변수가 설정이 되어있어 parttern 부분을 지워준다. 서버에 실행이 되지만 " " 형식안으로 들어가 있어 cat 명령어가 실행이 안된다. 그렇기에 실행 구문을 맞춰 보내 주면 flag.py의 값을 얻을 수 있다.
CSRF-1 [WEB LEVEL1] 1. vuln(csrf) page : 악성 스크립트인 가 alert(1)로 필터링되어 출력됨 더보기 fram, script, on 문자가 포함되어 있으면 *로 출력 2. memo : flag 페이지에서 실행하는 결과 값이 memo에 저장됨 더보기 global 함수를 사용해 memo_text 전역변수 선언 하여 memo 값을 memi_text 변수에 저장 3. notice flag : userid 값이 admin 이면 웹 서버 local 환경에서 flag를 memo로 추가하는 페이지 (소스코드에서 확인할 수 있음) 더보기 request.remote_addr 변수가 127.0.0.1이 아닌 경우 "Access Denied" 메시지를 반환하고, userid 값이 admin이 아닌 경우 "Access Denie..
devtools-sources [WEB LEVEL 1] 이 문제는 페이지를 다운로드하여 푸는 문제입니다. 파일을 다운 받아 index 파일을 열어 줍니다. index.html 파일의 페이지를 확인할 수 있습니다. 문제정보에서 개발자 도구를 사용해 문제를 푸는거기때문에 개발자 도구(F12)를 실행합니다. 개발자 도구를 사용에서 Ctrl + Shift + F 키를 눌러 전체 검색으로 DH를 검색하면 DH정보를 빠르게 찾을 수 있습니다.
file-download-1 [WEB LEVEL 1] 파일을 업로드할 수 있는 페이지는 Filename과 Content 구문에 내용을 입력 후, 업로드를 하면 메인 페이지에 저장이 되는 구조입니다. 이 페이지에서 flag.py 파일을 다운 받기 위해서는 다운로드 취약점을 이용해야 합니다. flag.py 파일은 서버 내부 어딘가에 있을거랑 생각을 하기 때문에../ 구문을 사용해 상위폴더로 이동한 다음 flay.py를 저장시켜봅니다. bad characters 구문이 보여지는걸 확인할 수 있습니다. 소스 코드를 보면 /upload 페이지에서 .. 에 대한 구문을 사용하면 bad characters 메시지를 출력하라는 구문이 있습니다. 소스코드를 보면 /read 라는 경로가 하나 있는 걸 확인할 수 있습니다. /read 경로에서는 .. 구문이 필터링 안되어 있는..
simple_sqli [WEB LEVEL 1] 기본적으로 로그인 페이지 쿼리는 select * from user where id='{ }' and pw='{}' 이러한 쿼리 형태입니다. 이 문제의 쿼리 형태는 select * from users where userid="{userid}" and userpassword="{userpassword}"입니다. userid 값에는 admin이 들어가고 "(쌍따옴표)를 뒤에 넣어 형식을 맞춰 줍니다. 그다음 and 문으로 뒤에 값을 참으로 만든 다음 --(주석)을 사용해 뒤 부분을 생략해 줍니다. 완성된 쿼리는 select * from users where userid="{admin"and1=1--}" and userpassword="{userpassword}"입니다.
session-basic [WEB LEVEL 1] 로그인 페이지에서 소스보기를 통해 ID/PW가 guest라고 평문으로 노출이 되어 있다. "guest"로 로그인을 한다. guest로 로그인이 되었다. admin으로 로그인을 해야 하기 때문에 문제소스코드를 분석해보자. 소스코드에서 login 페이지 말고 admin 페이지가 있는 걸 확인할 수 있다. admin 페이지에 접근을 하면, 많은 세션 id 값이 저장이 되어있는데 그중에 admin의 세션id가 있는걸 확인할 수 있다. 세션id 값을 admin의 세션id 값으로 수정을 해준다. admin의 세션 id값으로 수정하였을 때, admin으로 로그인이 되었다.