전체 글
모두의 보안 스터디 2기 멤버 모집
모두의 보안 스터디 2기 멤버 모집
2019.03.02모두의 보안 스터디 2기 멤버를 모집합니다!😃 모두의 보안 스터디는 멤버들 간의 정보공유, 주제에 따른 연구를 통한 결과물 산출을 목표로 합니다. ★모집 대상 - 실력이 없어도 보안공부에 대한 열정이 넘치는 사람- 시간적 여유가 많은 사람- 아이디어가 반짝이는 사람 ★모임 내용- 총 10주간 진행- 매주 일요일 4~5시간 정기모임(모임장소 : 양재역 1번 출구 거원빌딩 4층)- 회비x, 식비 각자해결- 총 멤버 10명 제한- 최종멤버 결정 10월 30일 ★지원 방법- 아래 링크를 통해 지원서 작성https://goo.gl/forms/42w1Aybzxog2QFfi1 1기 스터디는 리더가 제공하는 토막 강의와 함께, 웹 해킹 분야를 중심으로 학습하며, 각자 학습한 내용에 대한 보고서를 쓰고매주 모임일에 서로..
모두의 보안 1기 결과보고
모두의 보안 1기 결과보고
2019.03.02길면서도 짧았던 모두의 보안 스터디 1기가 성공적으로 10주차 까지 모임 진행 후 마무리 되었습니다.아쉬웠던 부분은 시작멤버 중 5명은 직장이 바빠서, 혹은 생각보다 공부할게 많아서 라는 이유로 끝까지 함께하지 못했다는 점, 결과물에 신경을 많이 쓰지 못해서 공개할만한 자료가 많지 않다는 점 등이 있었지만, 그래도 첫 도전만에 든든한 지원군을 4명이나 얻었습니다! 모두의 보안 1기 학습 산출물 깃허브https://github.com/yeomgeuncheol/Modu-Boan-Season1 2기 스터디에서는 1기에 얻은 지식과 경험을 토대로 더 체계적이고, 알찬 내용으로 진행하고 싶은 바램입니다.
[모두의 보안] 프로젝트 시작
[모두의 보안] 프로젝트 시작
2018.09.23보안공부를 처음 시작할 때 가장 힘들었던 점은 정보의 부족이었습니다.지방에 살던 제 주변에는 보안공부를 하는 사람도 없었거니와, 그 흔한 학원조차 없었습니다.흔히 영어공부를 하고 싶다고 하면 단어를 외워라 와 같은 답변을 받을 수 있었지만,"보안전문가가 되고 싶습니다. 해킹은 어떻게 시작해야 할까요?"라는 질문을 하면 "C언어를 공부해라." "가서 수학공부나 해라 초딩아" 등등의 답변을 받았던 저에게는 무엇부터 시작해야 할지가 가장 큰 고민이었습니다. 그러던 와중에 해커스쿨, 보안인닷컴 등의 커뮤니티를 알게 되었고, 커뮤니티를 통해 다양한 정보를 얻게 되면서 커뮤니티의 중요성에 대해서 뼈저리게 실감하게 되었습니다.말로 다 설명할 수 없을 만큼 많은 정보를 커뮤니티를 통해 얻었고, 덕분에 좋은 인연들도 많..
[SUNINATAS 23번] 문제풀이
[SUNINATAS 23번] 문제풀이
2018.08.26WEB Level 22써니나타스의 마지막 문제입니다. level23의 문제도 22번 문제와 같이 Blind Injection문제입니다.문제에도 "Hard Blind Sql Injection"이라고 적혀있듯, 몇가지 제약사항으로 인해 난이도가 조금더 상승한 모습을 볼 수 있습니다. 난이도를 상승시킨 요소들은 다음과 같습니다. admin 문자열 필터링 규칙 추가입력가능 문자길이 30자 제한 소스의 주석부분을 살펴보면, admin의 패스워드를 찾는 것이 이 문제의 목적인 것 같습니다. 먼저, admin의 pw를 찾아야 하는 문제이기 때문에, 인젝션하여 검색할 튜플을 특정짓기 위해서 admin이라는 id정보를 필터에 걸리지 않게 쿼리로 전달할 방법을 찾아야 했습니다. 그 결과, 제가 찾은 방법은 두가지 정도였습..
[SUNINATAS 22번] 문제풀이
[SUNINATAS 22번] 문제풀이
2018.08.17WEB Level 22써니나타스의 다음 웹 관련 문제는 level22번 문제입니다. 22번 문제는 Blind Sql Injection에 관한 문제입니다. 로그인 창이 하나있고, “Blind Sql Injection” 이라는 문구가 친절하게 써져있습니다. id와 pw를 써 넣는 곳이 있고, 이 곳에 넣은 값은 해당 프레임이 참조하는 데이터베이스의 쿼리문의 일부로 전달이 됩니다. 이 값을 개발자가 의도하지 않은 적절하지 않은 데이터를 삽입하면, 적절한 필터링이 안되어 있을 경우, 공격자가 임의로 데이터베이스를 조작하거나 참조할 수 있게 됩니다. 블라인드 SQL 인젝션의 경우에는, 데이터베이스 조작을 통해 직접적인 데이터베이스 내용을 볼 수는 없지만, 주로 참, 거짓을 판단하는 구문을 전달해, 각 상황에 따라..
[SUNINATAS 8번] 문제풀이
[SUNINATAS 8번] 문제풀이
2018.08.16WEB Level 8level8은 굉장히 간단한 문제이면서도 귀찮은 문제입니다. 물론, 공격용 코드를 작성할 줄 모른다는 가정 하에 말입니다. 문제를 간단하게 살펴보면, 로그인을 하는 것이 목적이고, 주어진 힌트정보에 따르면, admin 계정으로 로그인 할 수 있고, 그의 비밀번호는 0~9999 사이의 숫자라는 것을 알 수 있습니다. 헤더 정보를 확인해보니, 로그인 요청을 할 때, 페이지 요청방식은 POST 방식이고, 파라미터로 id, pw 두 개의 필드를 이용해 서버에 전달하고 있었습니다. 페이지 요청방식을 알아낸 이상, 코드를 만드는 것은 누워서 잠자기입니다. 파라미터의 pw 필드의 값을 0~9999 까지 변경하면서 최대 1만 번 반복하여 페이지를 요청해보면서, 응답 페이지 소스에 Password I..
[SUNINATAS 7번] 문제풀이
[SUNINATAS 7번] 문제풀이
2018.08.15WEB Level 7level7은 들어가자마자 눈이 즐겁습니다. 페이지의 동작을 확인하기 위해서, 전체 페이지의 가운데에 위치한 YES버튼을 눌러보았더니, “Fail.. Your too slow" 라는 메시지만, 뜨고 반응이 없습니다. 페이지의 소스를 확인해 보니, 주석으로 라는 힌트가 있었습니다. 정황으로 보아, 저 YES라는 버튼을 최대한 빨리 눌러야 하는 것으로 보입니다. 프록시 툴로, 페이지를 요청할 때, 아쉽지만, 아이유와 윤아의 사진, 개행 들을 모두 제거하고, 페이지와 YES버튼의 구조만 남겨두고, 요청하여 YES버튼을 재빨리 눌러보았지만, 아무리 해보아도 해결이 안되는 것으로 보아, 더 빠른 반응을 요구하거나, 서버에서 페이지를 제공한 시점으로 부터의 응답시간을 체크하는 것으로 판단이 되어..
[SUNINATAS 6번] 문제풀이
[SUNINATAS 6번] 문제풀이
2018.08.15WEB Level 6Level6에 들어가면 5개의 게시글이 올라온 게시판이 하나 나옵니다. 눈에 들어오는 1번 게시물을 보면 “Reading suninatas's Writing!^^” 이라는 힌트 아닌 힌트가 써져있습니다. 2번 게시물에는 md5 해시를 인/디코딩 할 수 있는 사이트의 링크가 보입니다. (https://md5hashing.net/) 4번과 5번 게시물에는 의미를 알 수 없는 말들이 써져있었습니다. 3번 게시물을 클릭하자, 팝업창이 하나 떴습니다. Password를 입력하라는 메시지가 떠 있었는데, 친절하게도 입력한 패스워드가 어떻게 쿼리 되는지에 대한 쿼리문이 아래에 자세하게 나와 있었습니다. 사용자가 적절한 패스워드를 입력하면, T_Web13 이라는 테이블에서 nldx값이 3인 라인의 ..
[SUNINATAS 5번] 문제풀이
[SUNINATAS 5번] 문제풀이
2018.08.08WEB Level 5 level5 에서는 자바 스크립트 난독화 기법에 대해서 설명합니다. 클라이언트 사이드에서 실행되고 해석되는 언어인 자바 스크립트는 보안적으로 취약할 수 밖에 없기 때문에 나쁜 의도를 가진 사용자들이 노출되어 있는 스크립트를 해석하여 적절하지 않은 행동을 하는데 이용하기도 하고, 자신이 공들여 만든 소스코드를 어떤 이가 쉽게 도용하여 마치 자신이 만든 것인 양 사용할 수 있는 등의 여러 가지 문제점이 존재하는, 편리하지만 동시에 굉장히 취약한 형태의 구조를 가진 언어입니다. 이런 고민을 해결하기 위하여 생겨난 개념이 “자바스크립트 난독화” 입니다. 개발자들은 원하지 않는 정보를 클라이언트 상에서 숨기려, 스크립트를 보아도 해석하기 어렵도록 이 기술을 적용하여 해석상에는 문제가 없지만,..
[SUNINATAS 4번] 문제풀이
[SUNINATAS 4번] 문제풀이
2018.08.04WEB Level 4level4에서는 두 가지 조건을 만족해야 클리어할 수 있습니다. 페이지의 소스를 보면, 그 두 가지 조건에 대한 힌트가 나와 있습니다.“”1. 50 point를 만들어라.2. 'SuNiNaTaS' 페이지의 하단에는 User-Agent 정보를 보여주고 있고, 동작 방식을 살펴보니 가운데에 위치한 Plus 버튼을 한번 누르면, 포인트의 값이 1씩 상승하는 구조인듯 하였습니다.혹시나 하여, 프록시 툴을 활용하여 Point 값을 50으로 설정하여 서버에 넘겨보았지만, 돌아온 응답에서는 숫자가 정상적으로 카운팅 되어 올라가는 것을 보아, Plus버튼에 반응하여 숫자를 카운팅하는 독자적인 함수가 서버에 존재하는 것을 유추할 수 있었습니다. 직접 눌러서 Point를 50을 만들어 보려 하였으나,..
[SUNINATAS 3번] 문제풀이
[SUNINATAS 3번] 문제풀이
2018.08.03WEB Level 3level3 페이지에 들어가면, “Write articles in Noteice Board!” 라는 문구만 나오고, 뒤로 가기, 메인 페이지로 가기 버튼 이외의 다른 동작을 할 수 있는 장치는 없습니다. 페이지를 소스 코드를 보아도 결과는 마찬가지입니다. 문제 페이지에서 말하는대로 Suninatas 메인페이지의 Notice게시판에 글을 써보기로 하였습니다.글을 작성하기 위해서, 매인 페이지에서 Notice 보드로 이동하여 글쓰기를 시도해 보려 하지만, Notice 보드에는 글쓰기 버튼이 없습니다. 여러 가지 게시판들을 들어가 봅니다. Q&A 라는 게시판을 보면, Notice 페이지와 형태가 매우 유사하고, 왼쪽 상단의 글자만 다릅니다. 만약 내가 사이트 개발자였다면, 각각의 페이지들을..
[SUNINATAS 2번] 문제풀이
[SUNINATAS 2번] 문제풀이
2018.08.03WEB Level 2 로그인창 달랑 하나 있고 아무것도 없습니다.SQL Injection에 관한 문제인가 싶어 여러가지 값들을 입력해 보았지만 아무런 반응이 없고,아무값도 입력하지 않았을 때에는 위와 같은 메시지가 뜹니다. 혹시나 싶어 페이지 소스를 보았더니, 정말 '헉' 이었습니다. 로그인 폼의 동작을 결정하는 함수의 일부분이 JavaScript로 작성되어 있었을 뿐만 아니라, 로그인 성공의 결정적인 조건이 주석으로 힌트처리가 되어 있었습니다.또한, 아무 값도 입력하지 않았을 때에 나타났던 메시지의 정체도 밝힐 수 있었습니다. 자바스크립트는 'Client Side' 동작을 수행하는 언어로서 보안적인 부분에 있어서 매우 취약하기 때문에, 웹을 구성할때 보안이 필요한 부분에는 잘 사용하지 않는 언어입니다...