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 ..