문제정보. 이름에서 보면 JWT (JSON Web Token)을 이용하는 문제처럼 보인다. 링크를 타고들어가면 아래와같은 페이지가 뜨는데 내용의 요점은 다른 유저를 제외한 admin은 특별한 스크래치패드를 갖고있다고 한다. 정상적으로 아무 입력값을 줘보자. 아래의 밑줄친부분을 보면 jwt토큰을 달고 원래 페이지로 다시 리다이렉션되는 것을 볼 수 있다. $curl https://jupiter.challenges.picoctf.org/problem/61864/ -d 'user=revi1337' -L -v jwt 토큰은 JSON Web Token의 약자이며 송/수신자 간의 정보를 JSON 객체로 안전하게 전송하기위한 토큰이다. JWT 토큰은 . 을 기준으로 Header.Payloads.Signature 이렇게..
문제정보이다. 1,2번과 비슷한 문제이다. 디폴트페이지, Support 페이지는 동일하다. 하지만 이번엔 login.html 페이지가 좀 다르다. username 파람은 받지 않는 것을 확인 가능하다. 소스를 확인하면 username이 없은것 말고는 password, debug 파람을 받는 것은 동일하다. 입력값 조작말고 일반적인 값을 넣어보았다. 하지만 whoami를 입력하였지만, whoami말고 다른 값이 나온다. 이것은 ROT13로 암호화되서 출력되는 것이다. ROT13은 굉장히 단순한 암호알고리즘이다. Rotate by 13의 약자이며 13자리 뒤로 밀어내는 카이사르 암호의 일종이다 ROT의 종류는 ROT26(평문인데 이게왜..), ROT47이 있다. 우선 알파멧은 A-Z 까지 기본적으로 26개가..
문제정보이다. 일단 페이지를 보자. Irish-Name-Repo 1 번과 마찬가지로 디폴트페이지는 동일하다. 상단 메뉴바에서 Support 를 들어가면 admin을 포함하여 존재하는 유저 몇몇을 확인가능하다. 마찬가지로 상단의 메뉴바에서 Admin Login 페이지를 누르면 로그인폼이나온다. 이것의 소스코드를 확인해보면 1번과 동일하게 login.php 페이지에 hidden필드인 debug와 username, password 매개변수를 POST로 넘기고 있다. hidden필드의 value를 1로 변조해서 보내면 디버그모드가 활성화되어 response로 서버에 쿼리되는 SQL문이 출력된다. 1번과는 다르게 입력값을 조작하면 SQLI Detected라는 문구가 뜬다. 확인해보면 or 를 쓰면 막힌다. 우회기..
문제정보이다. 로그인할수 있느냐고 물어본다. 페이지 왼쪽 상단의 메뉴바에서 Admin Login페이지에 들어가면 아래와같은 화면이 출력된다. curl로 확인해보면 로그인폼은 username, password 그리고 hidden 값으로 0이 POST 로 login.php에 보내지는것을 확인 가능하다. hidden값은 디폴트로 넘어가는 값을 의미한다. 게다가 이것의 이름이 debug이고 값이 0이기 때문에 이 값을 1로 바꾸면 서버에 쿼리되는 SQL 문이 출력된다. 이것을 통해 인증우회를 하면된다. password나 username입력값을 아래와 같이 조작하면 인증우회를 할 수 있다. -- 는 주석이며 뒤에 나오는 쿼리문은 무시하는 것을 의미한다. 또한 or 1=1 은 무조건 True를 만드는 것이다. FL..
문제 정보이다. 힌트에는 난독화를아느냐라고 물어본다. 일단 페이지를 들어가면 이런사이트나 나온다. 좀 긴 코드가나온다. 역시 난독화가 되어있다. 이 난독화된 코드로 새로운 js파일로 만들어준다. 그리고 이 난독화된 코드를 vscode로 데려와 prettify시켜준다. 이렇게 더러운 놈이 말끔하게 정리된다. 이렇게 정렬하려면 vscode의 확장책 Beautify를 설치해야한다. 맨아래줄 alert창에 breakpoint를 걸어주고 js 디버깅을 한다. 하나씩 디버깅을 하다보면 _0x4b5b('0x2') 는 substring이라는 것을 알게된다. _0x4b5b('0x2') 은 모든 if 문에 붙어있으므로 이것을 .substring으로 모두 바꾸어줄 수 있다. js에서 substring(n,m) 은 n ~ m..
문제 정보이다. 내용을 보면 picobrowser만 렌더링 가능하다라고 나와있다. user-agent 이용하는 것같음 기본페이지이다. 대놓고 Flag 버튼을 누르라한다. 하지만 경고창으로 picobrowser를 사용하라는 경고창이 뜨고 현재 나의 User-Agent를 보여준다. User-Agent는 요청헤더중 하나로 서버가 User-Agent를 통해 어떤 브라우저를 통해 접속하는지 알게해주는 헤더이다. 소스코드를 보면 버튼의 페이지는 /flage이다. 이페이지에 접근할때 User-Agent헤더를 변조시켜 요청하면 된다. $curl -A 'picobrowser' https://jupiter.challenges.picoctf.org/problem/28921/flag -s | egrep 'picoCTF\{\S..
문제정보이다 . Client side를 믿지말라고 한다. 처음에 페이지에 접근하면 아래와같은 페이지가 뜬다. 페이지 소스를 보면 js 코드가 나온다. verify의 버튼을 누르면 아래의 verify 함수가 동작하는것이다. substring을 문자열 쪼개고있는데 잘보면 split * 숫자 형식으로 일정한 형태를 유지하고 있다. 이것들을 추출하면 될것같다. 우리는 플래그의 형식을 알고 있다. picoCTF{\S*} ㅇㅇ. 따라서 이것들을 조합해주면 된다. FLAG : picoCTF{no_clients_plz_b706c5}
문제정보이다. 어우.. 해석 귀찮.. 일단 들어가보자 링크들 들어가면 이렇게 로그인할 수 있는 form이 나와있다. 페이지 소스코드를 보면 action이 login페이지에서 이루어지며 메서드는 POST 매개변수로는 user 과 password 가 들어가는 것을 확인 가능하다. curl로 dummy값을 보내보면 헤더에 쿠키를 설정하라는 Set-Cookie헤더가 전송되고 admin=False가 나온다. 응답헤더에서 나온 쿠키값을 설정하고 admin을 True로 바꿔주면 될것같다. 여기서 302 redirection이 뜨는데 이는 Location 헤더를 보면 알 수 있다. /flag페이지로 리다이렉선되는데 처음에 login을 하여 쿠키를 설정하고 admin을 True를 바꿔주며 이 쿠키들로 /flag페이지에 ..
문제정보이다. 제목을 보면 그냥 robots.txt 를 찾으면될것같다. robots.txt 는 검색엔진이 크롤링 할 수 있는 범위를 지정하는 문서이이다. information gathering에서 필수적인 단계이다. robots.txt 는 보통 웹 기본 index.html페이지에 존재한다. curl로 확인해보면 모든 검색엔진에 대해 /1bb4c.html 파일에 접근 거부를 때리는것을 볼 수 있다. curl로 접속하면 원래 접근제한을 떄려야하지만 flag를 확인 가능하다. Flag : picoCTF{ca1cu1at1ng_Mach1n3s_1bb4c}
제목이름처럼 인스펙터를 사용하면 될 것 같다. 링크를 들어가면 아래와 같은 페이지가 나온다. 페이지 소스를 HTML CSS JS 로 페이지를 만들었댄다. 그리고 주석으로 Flag의 일부가 노출되어있다. 이를 통해서 나머지 두개의 Flag는 css와 js 파일에 있는 것을 확인 유추가능하다. 아래와 같이 플래그들을 결합하면 된다. FLAG : picoCTF{tru3_d3t3ct1ve_0r_ju5t_lucky?2e7b23e3}