Segfault CTF - 12주차
·
Study/with normaltic
Segfault CTF - 12주차`GET Admin 1` -> `GET Admin 2` -> `GET Admin 3` 순으로 푼다. 이번 문제는 CSRF 공격을 이용하게 된다.`[아이디]`라는 ID로 계정을 생성하면 해당 ID와 함께 `[아이디]_admin`이라는 ID로 관리자 계정이 생겨난다. 이번 문제에서부터는 mypage.php 페이지에서 회원정보(정확히는 비밀번호만) 수정이 가능해졌다. 1. GET Admin 1이전까지 풀었던 문제와 똑같이 생긴 웹사이트다. 달라진 점이라고 한다면 회원정보 수정이 가능해졌다는 것이다. 원래 `nciwo`였던 비밀번호를 `asdf`로 바꿔보았다.앞으로 로그인을 할 때 비밀번호에는 `nciwo`가 아닌 `asdf`로 해야한다.mypage.phpmypage.php의 ..
Segfault CTF - 11주차
·
Study/with normaltic
Segfault CTF 11주차총 3개의 문제가 있다. 푸는 순서는 `Basic Script Prac` -> `Steal Info` -> `Steal Info 2`이다.이번 3개의 문제들은 기본적으로 관리자 봇을 XSS 취약점이 존재하는 특정 링크에 접속시켜, 관리자 계정으로 접속해야만 볼 수 있는 텍스트를 탈취하는 것이 목표다.1. Basic Script PracXSS가 일어나는 포인트를 알려줬다. Mypage에서 정확히 어느 지점에서 XSS가 일어날 수 있는지 알아보겠다.XSS Point`ID: nciwo, PW: nciwo`로 로그인한 뒤 Mypage에 접속한 모습이다. 얼핏 보기에는 ID 입력창에서 XSS가 일어날 것처럼 보인다. 관리자 계정으로 Mypage에 접속하면 "Flag Here..!"..
XSS - Cross Site Scripting
·
Study/with normaltic
XSSXSS는 Cross(X) Site Scripting의 줄임말로, 클라이언트 측에 스크립트를 삽입하여 중요한 정보를 탈취하는 해킹 기법이다. 사용자의 입력이 HTML 파일 내에 담기거나 Javascript와 같은 스크립트 언어에 의해 출력이 되는 지점에서 해당 공격이 발생할 수 있다. 해당 기법으로는 다른 사용자의 인증 정보인 세션 ID를 탈취하거나, 키로거(Key Logger)를 삽입하여 실제 로그인 정보(ID와 Password 등)를 가로챌 수 있다.XSS는 `Stored XSS`, `Reflected XSS`, `DOM-Based XSS`로 크게 세 가지 종류의 기법이 존재한다.타겟 사이트로그인하여 글을 올릴 수 있는 커뮤니티 형식의 사이트다. 기본적으로 사이트를 이용하기 위해서는 로그인이 필요..
SegFault CTF - 7주차
·
Study/with normaltic
1. SQL Injection 3평범한 로그인 페이지로 보인다. 먼저, User ID와 Password 필드에 `normaltic`, `1234`를 입력해 로그인이 성공적으로 되는 것을 확인해보겠다.정상적으로 로그인이 이뤄진다. 실패했을 경우의 상황을 살펴보겠다.ID: normalticPW: hmm일치하지 않는 정보라고 뜬다. 그럼 이제, SQLi가 가능한지 테스트해보겠다.ID: normaltic'PW: 1234SQL 쿼리에 대한 에러 메시지가 페이지에 출력된다.에러 메시지가 출력되는 것을 확인했으니, Error-based SQLi로 방향을 잡아보겠다.Error-based SQLi에러 메시지를 읽다보면 해당 DBMS는 MySQL인 것을 알 수 있다. MySQL에서 Error-based SQLi를 수행할 ..
Blind SQL Injection
·
Study/with normaltic
Blind SQL Injection개발의 편의를 위해 에러메시지를 띄우는 것은 Error-based SQL Injection에 취약하다는 것을 저번 포스트에서 알 수 있었다.하지만 에러메시지를 없앤다고 해서 SQLi로부터 자유로워지는 것은 아니다. 로그인 페이지의 경우, 로그인이 성공적으로 됐다면 어떤 페이지로 리다이렉션이 되거나 하고, 실패했다면 실패했다는 문구가 뜨는 경우가 대부분이다.혹은, ID의 중복 체크를 하는 경우에도 실패 / 성공 여부는 사용자에게 알려주어야만 한다.이러한 필연적인 기능을 Blind SQL Injection에서 공격점으로 잡는다.SQLi가 가능한 곳에서 공격자는 중복체크할 ID 이외 하나의 무언가를 `and`로 묶어 더 질문한다.normaltic이라는 ID는 사용 가능해? a..
Error-based SQL Injection
·
Study/with normaltic
Error-based SQL Injection이 SQLi 기법은 에러 메시지에 기반을 둔다. 페이지를 만드는 데 있어, 개발자들은 개발 편의상 에러 메시지를 페이지에 띄우는 경우가 많다. 에러 메시지를 띄우지 않으면 페이지가 그저 500 Error를 보이며 어떤 부분이 잘못됐는지 알려주지 않기 때문이다.하지만 이렇게 에러 메시지를 띄우는 것은 공격자에게 좋은 정보를 제공할 기회를 만들어준다.SQL Injection (Error Based SQLi Basic)Segfault CTF의 문제를 예시로 들겠다.쿼리가 잘못됐거나 하는 등의 이유로 제대로 동작하지 않는다면 다음과 같이 에러 메시지가 뜬다.주목할 곳은 `~~ to use near ''normaltic'''` 이 부분이다. 실제 SQL 쿼리의 일부분을..
SegFault CTF - 6주차
·
Study/with normaltic
이번 주차에 제공된 문제(보너스 문제 제외)는 2개다.SQL Injection 1User ID를 토대로 유저를 검색할 수 있는 페이지인 것 같다.진짜인지 'normaltic'을 입력해 확인해보겠다.SQL 쿼리를 예상해보면 `WHERE id='normaltic'`일 수도 있고, `WHERE id LIKE '%normaltic%'`일 수도 있다. `rmal`만 입력해 어떤 건지 확인해보면, 위와 똑같이 `normaltic`의 유저 정보가 뜬다.즉, 쿼리는 `WHERE id LIKE '%normaltic%'`인 것으로 예상된다.이제 다음의 쿼리를 작성해 SQL Injection이 가능한지 확인해보겠다.normaltic%' and '1%'='1해당 입력이 들어가면 쿼리는 다음과 같이 완성된다.SELECT * F..
SegFault CTF - 5주차 - 번외
·
Study/with normaltic
이 문제에서 막혔다.`UNION`이라는 문법을 모르고 있었기 때문에 여러가지 방법을 시도하다가 결국 이상한 길로 빠져버리게 됐다.구글링 도중 특이한 방식의 SQL Injection을 찾아냈다.Login Bypass 3과 같이 DB에 있는 데이터를 전혀 출력해주지 않아도 DB의 데이터들을 얻어낼 수 있는 공격 기법이였다.Blind SQL Injection사이트의 반환을 기준으로 참인지 거짓인지 판단하며 아주 일부의 정보를 조금씩 뜯어내는 SQL Injection 기법이다.doldol' and '1'='1SQLi가 통하는지 확인하기 위한 문구다.and 뒤에 다른 것을 물어봐서 SQLi의 가능 여부가 아닌 다른 걸 물어보자.ID: doldol' and 혹시 id가 normaltic3인 유저의 비밀번호 맨 앞 ..
SegFault CTF - 5주차 - 2
·
Study/with normaltic
5. Login Bypass 1normaltic1으로 로그인하는 것이 목표인 문제인듯 하다.어디서 본듯한 로그인 창이다. 처음 제공받은 ID: doldol, PW: dol1234로 로그인을 해보겠다.저번처럼 쿠키를 이용한 방식은 아닌듯 하다. 보통 로그인 정보는 DB에 보관하니, 혹시 로그인 창에서 SQL Injection이 가능한지 시도해보겠다.ID에 `doldol' and '1'='1`을 적어, SQL Injection이 가능한지 판별한다. 만약 불가능하다면 로그인이 되지 않고, 가능하다면 로그인이 될 것이다.로그인이 됐다. SQL Injection이 먹힌다는 것을 알 수 있다.로그인 로직은 여러가지 다양한 방법으로 구현할 수 있는데, 그 중 가장 단순한 방법으로 생각해보겠다.$id = $_POST[..
SegFault CTF - 5주차 - 1
·
Study/with normaltic
Authentication Bypass이번 5주차의 CTF에서는 문제가 9개로 늘어났다. 바로 write-up으로 들어가겠다.1. Get Admin주어진 주소로 들어오면 단순한 로그인 창이 반겨준다. 문제에서 ID: `doldol`, PW: `dol1234`라는 로그인 정보를 줬으니 한 번 로그인해보겠다.별 거 없다. 상단의 Home, About, Contact 버튼을 눌러도 아무런 작동도 하지 않는다. (Log out 버튼은 로그아웃으로 작동한다)지난번에 이용했던 Burp Suite를 이용해서 어떤 패킷이 오가는지 살펴보겠다.빨간색 네모를 보면 내가 작성한 ID와 PW가 패킷 바디 부분에 담겨 전달된다. 서버에서는 ID와 PW를 검사한 뒤, 적합하다면 `loginUser`라는 쿠키에 ID값을 담아서 준..