웹해킹

Broken Auth(취약한 인증) 인증 및 세션 관리와 관련된 어플리케이션 기능이 잘못 구현되어 공격자에게 취약한 암호, 키 또는 세션 토큰을 제공하여, 다른 사용자의 권한을 얻도록 착취하는 행위 Broken Auth는 2017년 OWASP TOP10에서 2번째를 차지할 만큼 위험한 공격이다. 취약한 인증 공격은 다양한 방식이 있는데 브루트 포스 공격, 딕셔너리 공격으로도 공격이 가능한만큼 누구든지 가능한 공격이다. 또한 위의 공격 외에도 비밀번호 찾기 기능을 통해 사용자의 계정정보를 알아낼 수 도 있다. 안전한지 않은 로그인 방식 - (하) Broken Auth - Insecufe Login Form 페이지를 클릭하면 다음과 같이 나오게 된다. F12(개발자 도구)를 누르게 되면 다음과 같이 나오는데..
Search 페이지에 들어가면 다음과 같은 화면이 나온다. search 버튼을 누르면 다음과 같이 genre와 action 변수가 get 방식으로 URL에 변수가 노출이 되어 나온다. 이제 여기에 injection 공격이 먹히는지 확인하기 위해 '를 입력한다. 다음과 같이 경고가 나온다. 또한 search를 누르게 되면 페이지는 contains 함수를 호출한다. fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean? contains 함수는 검색할 단어가 들어 있는지 검색해주는 함수인데 두 개의 변수를 받는다. 첫번째 변수 안에는 테스트할 변수, 두 번째 명령어는 검색할 명령어가 들어가게 되고 만약 검색할 변수가 테스트할 변수 안에 있으..
XML - W3C에서 개발한 특수한 마크업 언어를 만드는데 사용하도록 권장되는 다목적 마크업 언어 ※ 마크업 언어 - 태그등을 이용하여 문서나 데이터의 구조를 기록할 수 있는 언어 - 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템 끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어진 언어 - XML을 사용하면 메타에디어를 기술할 수 있다. XML 사용하지 않는 경우 web hacking site - 데이터 표기시 HTML에서 어느부분이 데이터명이고 어디까지 데이터 값인지 알수 없음 XML을 사용한 경우 web hacking site - 데이터명과 데이터 값처럼 데이터에 의미를 부여할 수 있다. - 이와같이 데이터에 의미를 부여하는 것을 메타데이터라고 한다. - ..
이번에는 tmitter 문제를 풀어보기로 하였다. tmitter 문제를 눌러보면 우리는 "admin"이라는 계정으로 로그인을 해야한다고 한다. 일단 start를 눌러보면 일단 Tmitter 계정을 하나 만들어 보자 Sign up을 누르면 다음과 같이 나오는데 ID는 4글자 이상 패스워드가 7글자 이상이라고 한다. 일단 id, ps는 32글자로 정해두었다. 일단 id를 32글자 이상으로 만들어서 32글자만 해석되고 짜르게 해야 할 것 같다. 일단 F12를 눌러 ID 코드를 확인해보면 maxlength가 32글자로 되어있는데 33글자로 바꿔 준다. 그리고 admin이라고 치고 공백으로 채운다음 마지막에만 숫자를 넣어준다 ex) admin 2 이런식으로 만들면 된다. 비밀번호는 7글자 이상이면 된다. 비밀번호..
이번에 풀어볼 문제는 md5 compare라는 문제이다. md5 compare 문제를 들어가면 다음과 같이 뜬다. start 버튼을 누르면 다음과 같이 뜬다. view-source를 눌러 소스를 확인하면 다음과 같이 나오는데 소스를 해석해보면 value 1의 값과 value 2의 값이 같아야 해결이 된다. 근데 v1에는 알파벳만 들어가야하고 v2에는 숫자가 들어가야한다. 결론은 알파벳을 넣고 md5 해시 했을 때 값과 숫자를 넣고 md5 해시 했을 떄 값이 동일해야 한다. 당황할 수 밖에 없는 문제였다. 보안기사 공부할 때 해시 함수를 돌리면 충돌이 발생하지 않고서는 서로 다른 값이 같을 수가 없다고 배워왔길래 내가 배워온 지식을 부정하는 것 같았다. 그래서 혹시나 하는 마음에 구글에 'md5 equal..
strcmp 문제를 눌러보면 다음과 같이 나온다. 문제를 해석해보면 "너가 'strcmp'함수를 우회할 수 있다면 너는 flag를 얻을 수 있을것이다." 이 소리이다. 일단 먼 소리인지는 모르겠지만 start를 눌러보자 start를 누르면 다음과 같이 password를 입력하는 창이 나온다. 일단 밑에 view-source를 눌러보자 다음과 같은 코드가 나온다. 코드를 대충 해석해보면 $password = sha1(md5(rand().file_get_contents("/var/lib/dummy_file")).rand()); -> password 값은 랜덤함수를 돌릴 것이다. if (strcmp($_POST['password'], $password) == 0) -> 내가 입력한 패스워드 값과 random ..
WTF-CODE 문제를 클릭하면 다음과 같이 나온다. 해석하면 프로그래밍 언어 중 하나다. 너는 이 코드를 읽을 수 있냐? 라고 나온다. start 버튼을 눌러보면 이런 괴기한 글이 있고 밑에 source_code.ws 파일을 다운 받으라고 되어있다. 일단 다운을 받고 ws 파일이 무엇인가 궁금해서 구글에 ws 파일을 쳐보니 광고글 밖에 없다. 일단 파일을 열기 위해 File Magic이라는 파일을 설치하였다. 설치 하고 키면 다음과 같이 나오는데 파일을 끌어오던 불러오던 불러오면 이런 메시지가 뜨면서 은근 예를 누르도록 유도하지만 우리는 생각이 가능한 사람이기 때문에 아니요를 누른다. 누르면 또는 ws 파일을 메모장으로 열어도 열린다. 다음과 같이 코드가 나온다. 얼핏보기에 점자 또는 모스부호 같아서 ..
DB is really good이라는 문제를 누르면 다음과 같이 나온다. 누가봐도 DB와 관련된 문제이다. start 버튼을 누르고 들어가보면 다음과 같이 나오는데 일단 코드먼저 확인해보았다. 크롬을 사용하는 경우 ctrl+u를 누르면 코드를 확인할 수 있다. 코드를 확인해보면 다음과 같이 코드가 나온다. 코드를 살펴보면 "admin"이라고 입력한경우 "admin은 접근이 안된다"라는 경고창이 뜬다. admin으로 접속하지 말라는 소리다. 하지만 인간이란 생물은 하지말라면 더 하게 되는 종특이 있기에 admin으로 접속해 보았다. 다음과 같이 뜬다. 그래서 아무거나 입력하고 들어가봤다. admin에서 min을 빼고 ad만 입력하였을 때다. 역시 다들 admin을 한번씩은 입력한 것 같아 먼지모를 동질감을..
md5 password 문제를 누르면 다음과 같이 나온다. md5('value', true)이게 힌트가 될수 있다. 일단 md5 해시 원리에 대해 알아야한다. md5같은 경우 인자로 들어온 문자열을 md5 해시하여 32bytes의 길이로 반환을 해준다. 여기서 두번째 인자를 옵션으로 줄 수 있는데 이 값은 'true' or 'false'로 줄 수 있다. 기본적으로 default 값은 'false'인데 'false'일 경우 32bytes의 값 'true'일때는 Hex값을 16bytes의 바이너리값으로 반환해준다. 이제 start 버튼을 눌러보면 다음과 같이 나오는데 여기서 get source 버튼을 누르면 다음과 같은 코드가 나온다. 이제 이 코드에서 우리는 이 부분을 봐야하는데 이코드를 간략하게 해석하면..
XML : 인터넷 웹 페이지를 만드는 HTML을 획기적으로 개선하여 만든 언어, 홈페이지 구축기능, 검색기능 등이 향상되었고, 웹 페이지의 추가와 작성이 편리해짐 XML은 데이터를 트리구조의 노드로 표현하며 사용자 정의로 데이터를 분류한다. ex) 1 matrix 다음 코드에서 최상위 노드는 'movies'이고 하위노드는 'action'이다. 'action'의 하위노드에는 'id', 'name'이 있다. 이처럼 XML 사용자는 다양한 데이터를 편의에 맞게 분류할 수 있다. Xpath : 확장 생성 언어 문서의 구조르르 통해 경로 위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어 Xpath는 일종의 쿼리로, XML DB 내용을 선택하고 조작하기 위하여 사용한다. XML은 트리구조로..
fly me to the moon이라는 문제를 클릭하면 다음과 같이 나온다. 게임인데 치팅 시스템 방지 프로그램을 우회해서 게임을 깰 수 있냐고 물어본다. 일단 들어가보자 이런 게임이 나오는데 게임을 하다 죽게 되면 다음과 같은 문구가 뜬다. 31337점 이상을 얻어야 flag가 나오는 것 같다. 이제 burpsuite를 사용해서 조작을 해야할 것 같다. 먼저 proxy 설정 해주고 게임에서 게임오버가 되어 이런 문구가 떠야한다. 이 부분에서 패킷을 캡쳐하면 score부분을 31337보다 크게 잡아주고 intercept is off 누르면 눌러준다 누르면 다음과 같이 flag가 나오는데 이 flag를 문제에 넣고 AUTH를 누르면 색깔이 바뀌어 있다.
login filtering 문제를 눌러보면 다음과 같이 나온다. 해석해보면 나는 계정이 있지만 잠겨있다. 필터링을 우회할 수 있냐고 물어본다. start 버튼을 누르면 다음과 같이 로그인 창이 나온다. 그리고 밑에 get source라는게 보인다. 이 get source를 누르면 복잡한 php 코드가 나온다. 그 중에서 if문을 보게 되면 id가 'guest'이거나 'blueh4g'일 경우 your account is blocked라는 메시지를 출력하도록 되어 있다. 그리고 나머지는 "login ok"라는 문구를 띄어주도록 되어있다. 이 때 비교 대상은 쿼리 결과로 나온 $row['id']가 아니라 $id이다. 또한 MYSQL은 대소문자를 구분하지 않기 때문에 id에 'guest'대신에 'Guest'를..
3년안에 내집 마련
'웹해킹' 카테고리의 글 목록 (2 Page)