목록Web (72)
김승현
문제 분석 접속하면 볼 수 있는 화면으로 새로고침을 할 때마다 문자열이 변경되는 걸 볼 수 있다. 중요한 부분만 보면 isset()함수를 통해 chall4의 세션이 있는지 확인하고 POST로 입력받은 key와 chall4의 세션이 동일하면 4번 문제가 풀리는 방식으로 진행된다. 10000000,99999999까지의 임의의 숫자와 뒤에 salt_for_you를 붙여서 임의의 8자리 숫자salt_for_you가 hash에 저장되게 하는 방식이다. chall4 세션에 이런 hash를 넣고 이 값을 500번 sha1 인코딩으로 암호화하는 방식이다.python을 이용해서 숫자salt_for_you를 500번 sha1해서 저장하고 검색해서 찾아봐야겠다. 코드 돌리는 중.....
문제 분석 문제에 접속하면 nonogram이라고 뜨면서 게임판이 뜬다. nonogram에 대해서 찾아보니까 위의 그림으로 예시를들면 3이라고 적혀있으면 그 줄에 3개의 네모가 이어지게 색칠을 하고 (예시) 1 1 1 이렇게 적혀져 있으면 띄워서 세 개를 색칠해야 한다. (예시) 이 방식대로 문제를 다 풀면 이런 모양으로 생긴 판이 나온다. 이제 solved를 누르면 이런 화면이 나온다. 주소는 넘어가고 우리 이름을 log에 입력하라고 뜨는데 일단 아무거나 입력해봤다. 그랬더니 이렇게 name과 answer 그리고 ip가 출력되어 있다. 입력창에 sql injection을 시도해보자. sql injection을 해봤는데 이렇게 딱히 바뀐 건 없는 걸 볼 수 있는데 answer이 그대로인 걸 볼 수 있다. ..
문제 분석 2단계에 접속하면 이렇게 Restricted area Hello stranger. Your IP is logging...이라고 뜬다. 개발자도구 - Elements로 코드를 살펴보자. 살펴보면 주석이 총 두 개가 있는데 하나는 시간이고 하나는 admin.php가 있다는 내용이다. (첫 번째 주석은 처음 접속하면 원래 내가 접속한 시간이 출력되는데 나는 이미 풀던 중에 찍은 거라 임의의 값이 나옴) 주석에서 알려준 admin.php로 가보자. admin.php로 가면 secret passwod를 입력하라고 하는데 일단 넘어가자. 개발자 도구 - Application - cookie를 확인해보면 time이라는 쿠키가 있는 걸 확인할 수 있다. 위 사진처럼 특정 숫자를 입력하면 2070-01-01 ..
문제 안에 있는 php 내용을 보면 user_lv라는 쿠키가 숫자가 아니면 1로 바꾸고 user_lv가 4 이상이면 1로 바꾸는데 user_lv가 3 초과이면 문제가 풀리게 되어 있다. 일단 쿠키를 확인하기 위해서 개발자 도구 - application - cookie로 가보자. 들어가 보면 user_lv가 1로 세팅되어 있는 게 보인다. 여기에 3< user_lv
문제 이번엔 저번 문제와 유사하지만 '와 "와 `까지 필터링하며 만약 사용됐을시 No Quotes가 뜨도록 되어있고 sql쿼리문이 id와 pw가 아니라 id와 no로 작성되어 있고 id엔 이미 guest로 입력되어 있다. 일단 no가 있으니까 파라미터 no에 0을 입력했더니 딱히 변한 건 없다. 이번엔 1을 입력해봤는데 Hello guest가 뜬 걸 알 수 있다. 이를 통해 각 아이디에는 고유의 no가 정해져 있다고 추측할 수있다. 그럼 admin은 0이거나 2 또는 그 이후 숫자일 것인데 일단 0부터 시도해보자. 연산자 우선 순위에 의해 and 먼저 연산이 되는데 guest의 no = 1 이기 때문에 id 'guest and no = 0는 거짓이 되기 때문에 뒤에 있는 or no = 0이 실행된다. 그..
문제 저번 문제와 코드에서의 차이점은 pw를 md5로 저장하 것과 id가 admin이고 pw가 일치할 경우 cobolt가 slove되고 그게 아니라면 You are not admin :(라고 출력되는 것 같다. id에 admin을 입력하고 뒤엔 주석처리를 하면 될 것 같다. admin' or %23 위와 같이 입력하게 되면 select id from prob_cobolt where id='admin' or #' and pw=md5('{$_GET[pw]}' 이렇게 입력되기 때문에 id는 admin이라서 참이고 뒤엔 주석처리 되어서 없어지기에 참이 되어 solve된다. #을 %23으로 입력한 이유는 url로 사용할 수 없는 문자나 의미가 왜곡될 수 있는 문자들은 인코딩을 거치는데, 이를 url encodin..
문제 include를 통해 config.php를 로드 login_check();함수 실행 db에 연결함 만약 id에 입력한 값에 /prob, _, ., (, ) 총 다섯 개를 대소문자 구분없이 들어있다면 나가지면서 No Hack이라고 뜨는 문장 같다. preg_match는 정규식 표현 검사하는 함수 아래는 pw에 대해 검사하고 No Hack query에 select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}' 저장 (id와 qw를 동시에 만족하는 걸 찾아야 함) 만약 id가 존재하면, (sqli가 성공했으면) gremlin 문제가 풀린다는 내용이다. . . . 풀이 그냥 query에 저장된 내용을 바탕으로 sqli를 해보면 될 것 같..
문제 DOM XSS를 이용해서 푸는 문제이다. 풀이 접속하면 이렇게 HOME 메뉴가 있고 vuln page, memo , flag가 있다. vuln으로 가보자. 이렇게 생겼다. memo와 flag는 한 번에 보자. 평소에 보던 생김새와 거의 변함이 없다. 소스코드도 거의 변함이 없는데 특히 csp bypass 문제와 거의 같아서 분석은 넘어가려고 한다... ㅎㅎ 그나마 중요하다면 여기 csp 내용이 그나마 중요한데 일단 있다는 거 정도만 기억해두도록 하자. 다운한 파일 중에 vuln.html이 있었는데 그것도 확인해 보자. 잘보면 name 변수에 대해 location.hash.slice(1)} is my name !이라는 코드가 있다. 잘 생각해보면 vuln 페이지에서 비슷한 내용을 봤는 걸 떠올릴 수 ..
문제 flag는 0~9, abcdef까지의 글자를 사용한 32자리라고 한다. 풀이 접속하면 이렇게 home 메뉴와 search, submit이 있다. search의 경우 이렇게 쿼리를 입력할 수 있게 되어 있다. submit의 경우 이렇게 url 입력을 통해 새로운 걸 입력할 수 있는 그런 건 것 같다. 소스코드 분석은 이미 강의에 되어 있기 때문에 넘어가겠다. search.html 여길 보면 검색해서 해당 결과가 존재한다면 새로운 iframe을 생성하는 걸 볼 수 있는데 이를 이용해서 iframe의 개수를 카운트해서 flag를 도출해낼 수 있을 것 같다. exploit code #!/usr/bin/python3 from flask import Flask, request, render_template, ..
문제 이전 문제에서 패치된 내용이라고 한다. 풀어보자. 풀이 접속하면 저번 문제와 비슷한 화면이 뜬다. vuln 페이지를 확인해보자. 아직 아무것도 안 했는데 벌써 nope !!이 떠있다... report로 가보자. 여긴 딱히 다른 점이 없는 것 같다. 소스코드도 확인해보자. 저번 내용과 비슷하니까 저번 코드를 참고하면 좋을 것 같습니다! 암호 : 4xNDYyOD [Dreamhack : Web] Relative Path Overwrite kshind.tistory.com 새롭게 추가된 404.php로 입력된 값을 찾을 수 없다면 not found를 띄우는 것 같다. 그리고 이번에 중요한 점은 filter가 static 폴더 안에 있다. 나머지는 거의 그대로니까 이전 풀이를 확인해보면 될 것 같다. 위 사..