CTF문제풀이

CTF문제풀이

los - wolfman(5)

orc 문제와 마찬가지로 prob, _, ., ()를 필터링하고있다. 또한 공백 또한 금지하고있다. id가 admin일때 쿼리문이 참인경우 문제가 풀리도록 되어있다. 다음과 같은 쿼리문을 삽입할 경우 참이면서 id='admin'이다. ' or id='admin' and '1'='1 다만 위 쿼리문에서는 공백이 들어가있다. 이 공백은 sql에서 다음과 같이 치환 가능하다. tab %09 line feed %0a vertical tab %0b form feed %0c carriage return %0d teb을 이용해서 쿼리문을 수정하면 다음과 같다 '%09or%09id='admin'%09and%09'1'='1

CTF문제풀이

los - orc(4)

우선 include를 통해서 같은 디렉토리의 config.php파일의 내용을 가져오고 있다. 다만 위 주소로 요청을 보낼 경우 응답내용이 없었다. 그 뒤에 login_chk라는 함수를 사용한다. 함수명을 보면 로그인 검증 함수로 추측 가능하다. if 문을 통해서 "prob", "_", ".", "()"를 필터링하고있다. 만약 id가 admin인 쿼리문이 참이 된다면 Hello admin이 출력될 것이다. 결과적으로 문제를 해결하고 본 스테이지를 통과하려면 solve함수를 실행해야하므로 정확한pw의 입력이 필요하다. 따라서 쿼리문의 삽입으로 pw를 찾도록 하겠다. 우선 쿼리문을 참으로 만들어 hello admin을 출력시키기 위해 pw 파라미터에 "'%20or%20'1'%3d'1"값을 넣어 요청을 전송해보..

CTF문제풀이

3. goblin

query : {$query}"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "Hello {$result[id]}"; if($result['id'] == 'admin') solve("goblin"); highlight_file(__FILE__); ?>위 코드에서 solve()함수를 실행시키는 것이 목표이다.위 목표를 위해서 sql injection을 해야하는데 id값이 guest로 고정이다. 또한 ',`," 문자가 preg_match로 막혀있다. 우선 repater를 사용해서 no값을 1부터 무작위로 넣어보는 방법이 있다. 지난번에 작성해놓은 파이썬 코드를 사용해보도록 하자. 그 결과 gues..

CTF문제풀이

cookie

로그인페이지에서 admin admin으로 로그인을 해보았다 그 결과 당연하게도 로그인되지 않고 다시 로그인 페이지로 돌아왔다. 로그인 페이지를 살펴보자;. guest/guest라는 디폴트계정이 있다는 주석이 있다. 이를 쿠키를 통하여 변조해보도록 하겠다. intercepte를 통해 쿠키의 username=guest에서 username=admin으로 변경하였다. 그리고 새로고침을 하였더니 admin으로 로그인 되었다.

CTF문제풀이

LOGIN에 대하여;

일반적인 로그인 과정을 순서대로 나열하여 보면 다음과 같다. 사용자가 로그인 페이지에 접근, 자신의 아이디와 비밀번호를 입력한다. 서버는 입력받은 아이디를 사용하여 데이터베이스에 해당하는 계정정보를 가져온다. 가져온 계정 정보에 저장된 해시된 비밀번호와 사용자가 입력한 비밀번호를 비교하여 일치하는가를 확인한다. 비밀번호가 일치하면 서버는 해당사용자가 인증되었다고 간주, 세션을 생성하여 사용자의 로그인 상태를 기억한다. 이후 사용자는 서비스에서 제공하는 기능의 이용이 가능해진다. 보통 서버는 사용자의 비밀번호를 해시함수로 암호화한 값을 저장한다. Session / Session ID / JWT Session이란 웹 애플리케이션에서 사용자 식별을 위해 서버에서 관리하는 정보를 말한다. 사용자가 로그인하면, ..

잉여토끼
'CTF문제풀이' 카테고리의 글 목록