분류 전체보기
-
[웹해킹 #3] Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF)EVI$ION/WEB HACKING 2019. 5. 2. 02:35
[크로스 사이트 스크립팅(XSS) 공격] XSS 공격이란, 공격자가 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후, 사용자의 웹 브라우저에서 해당 코드가 실행되도록 하는 공격 기법이다. 즉, 서버의 취약점을 이용하여 클라이언트를 공격하는 방식으로, 자바 스크립트를 이용하여 세션 쿠키를 탈취할 수 있다. XSS 공격의 종류로는 Reflected XSS 공격과 Stored XSS 공격이 있다. 자바 스크립트 (Java Script) 웹 어플리케이션에서 사용되는 언어 중 하나 HTML이 텍스트, 이미지 등의 정적인 내용을 표시해주는 언어라면, 자바 스크립트는 이벤트와 같은 동적인 기능을 구현해주는 언어이다. 구현 방법: XSS 공격 자바 스크립트 코드 // 원격지에서 쿠키를 탈취 // hacker.co..
-
[웹해킹 #2] SQL InjectionEVI$ION/WEB HACKING 2019. 4. 9. 00:00
[SQL Injection - WHERE 구문 우회, UNION 공격] SQL 인젝션이란, 데이터베이스에 전송되는 SQL 쿼리문을 조작하여 데이터를 변조하거나, 허가되지 않은 정보에 접근하는 공격이다. 주로 개인정보를 빼낼 때 많이 사용되는 기법이다. 정상적인 웹 요청 및 응답에서는, 사용자가 ID를 입력하면 서버는 SQL 쿼리문을 통해 데이터베이스에 접근하여 해당 ID가 있는지 검색하고, 정보가 있으면 검색 결과를 사용자에게 전송한다. 이때의 SQL 쿼리문은 아래와 같다. $id = $_REQUEST['id']; $query = "SELECT name, email FROM users WHERE id = '$id';"; 그러나 만약 ID 입력칸에 1' or '1'='1을 입력한다면, WHERE문의 조건이..
-
[Web Exploitation] The VaultWargame/picoCTF 2018 2019. 4. 3. 17:58
문제에서 제시된 링크에 접속하면 로그인 페이지와 함께 login.php의 소스 코드 링크가 나타난다. login.php의 소스 코드를 확인해보자. 위에서부터 확인해보면, username과 password는 모두 POST 방식으로 전송되고, SQL 쿼리를 통해 username과 password가 모두 일치해야만 로그인이 되는 것을 알 수 있다. 아래 validation check 코드를 보면, preg_match 함수를 통해 OR 또는 or을 필터링한다는 것을 알 수 있다. 이 때 주의할 점은, preg_match 함수는 $username에만 적용된다는 것이다. $password_match 변수를 보면, preg_match의 대상이 $password가 아닌 $username이므로, $password는 OR..
-
[Web Exploitation] ButtonsWargame/picoCTF 2018 2019. 4. 3. 17:26
문제에서 주어진 링크에 접속하면 Button1이라는 버튼이 존재한다. 해당 버튼을 클릭하면 button1.php에 접속되고, Button2라는 또다른 버튼이 나타난다. 두 번째 버튼인 Button2를 클릭하면 Access Denied 문구가 출력되고 이상한 동영상이 재생된다. 힌트는 두 버튼의 차이점이다. 다시 처음 화면으로 되돌아와서 개발자도구를 통해 Button1의 소스 코드를 확인해보면, button1.php가 POST 방식으로 전송되는 것을 알 수 있다. 반면 Button2의 경우 a 태그의 href 속성으로 button2.php가 전송되고, 전송 방식 또한 GET 방식이다. 따라서 button2.php에 제대로 접속하기 위해서는 전송 방식을 button1.php와 같은 POST 방식으로 바꿔줘야..
-
[Web Exploitation] Secret AgentWargame/picoCTF 2018 2019. 4. 3. 16:57
My New Website에 접속 후 바로 Flag를 누르면 현재 페이지가 구글이 아니라는 문구가 뜨면서 현재 사용중인 User Agent가 나타난다. User Agent란 사용자를 대신해 일을 수행해주는 소프트웨어 에이전트로, 거의 대부분 웹 브라우저를 말한다. 따라서 User Agent, 즉 현재 실행중인 웹 브라우저를 구글로 바꿔주면 된다. 개발자도구 실행 후 오른쪽 상단에 ...으로 표시된 곳을 클릭하면 More tools에 Network conditions 메뉴가 있는 것을 확인할 수 있다. Network conditions를 클릭하면 하단에 해당 메뉴가 생성되는데, 여기서 User-Agent를 Googlebot으로 변경해준 뒤 Flag를 클릭하면 Flag가 나타난다.
-
[딥러닝 #1] 딥러닝의 기초EVI$ION/DEEP LEARNING 2019. 4. 1. 06:03
[인공지능과 머신러닝, 딥러닝의 차이] 인공지능: 인간과 유사한 사고 구조를 컴퓨터로 구현한 기술이다. 머신러닝: 기계를 학습시킴으로써 인공지능의 성능을 보다 향상시킨 기술이다. 사람이 직접 필요한 데이터를 넣으면, 기계는 이를 학습하여 인간보다 더 정확하고 올바른 결과를 도출해낸다. 딥러닝: 머신러닝과 유사하지만, 머신러닝처럼 사람이 데이터를 선정해 학습시킬 필요가 없이 아무 데이터나 넣어도 기계 스스로가 학습하여 필요한 특성을 찾아나가는 기술이다. [딥러닝이 데이터를 처리하는 방식, 신경망(Neural Network)] 딥러닝은 인간의 뉴런과 비슷한 인공신경망(Artificial Neural Network, ANN) 방식으로 정보를 처리한다. 따라서 이 신경망을 학습시키는 것이 딥러닝의 핵심이다. 그..
-
[Webhacking.kr] Challenge 18 풀이Wargame/Webhacking.kr 2019. 3. 30. 23:09
이번 문제는 SQL Injection 문제이다. 먼저 index.phps 페이지를 확인해보자. 코드를 확인해보면, no를 GET 방식으로 입력받아야 아래 소스가 실행된다는 것을 알 수 있다. 여기서 no는 입력칸에 입력된 값이 저장되는 변수이다. eregi는 php의 입력 문자열 필터링 함수이다. 이 함수로 인해 공백, /, 괄호, \t, |, &, union, select, from, 0x는 no의 입력값으로 올 수 없다. 만약 이 문자들이 입력되면 exit 함수가 실행되어 no hack 문구가 출력된다. 그 뒤에 나오는 $q=@mysql_fetch_array(mysql_query("select id from challenge18_table where id='guest' and no=$_GET[no]"..
-
[Webhacking.kr] Challenge 17 풀이Wargame/Webhacking.kr 2019. 3. 30. 21:41
이번 문제는 매우 간단하게 해결되는 문제이다. 먼저 개발자 도구를 실행한다. Script 부분을 보면, 매우 긴 계산식과 함께 sub 함수가 정의된 것을 확인할 수 있다. unlock은 위 식의 결과값이고, 만약 login.pw.value와 unlock이 같다면 패스워드가 출력될 것임을 알 수 있다. (또한 패스워드는 unlock을 10으로 나눈 값과 같다.) 즉, 위 식을 계산한 결과값만 알면 문제는 해결된다. 계산 방법을 알아내는 방법은 여러 가지가 있는데, 나는 개발자 도구 내의 콘솔창에 식을 그대로 복붙해 돌렸다. 콘솔창에 나온 계산 결과값을 그대로 입력창에 입력한 뒤 check를 클릭한다.