본문 바로가기

딥러닝

webhacking.kr [문제 26번] 25번에 이어 26번문제를 풀어보자. 해당 문제의 배점은 100point이며, 이 문제 또한 다소 쉬울 것으로 예상된다. 해당 문제를 접속하니 index.phps라고 인덱스 페이지의 소스코드가 주어진 것을 확인할 수 있다. 클릭해보자. 소스코드를 보니 상당히 쉽다. 분석) if(eregi("admin",$_GET[id])) { echo("no!"); exit(); } // GET방식으로 넘어온 id 변수의 값이 'admin'이면 "no!"를 출력 후 종료한다. $_GET[id]=urldecode($_GET[id]); // GET 방식으로 넘어온 id값을 urldecode하여 담는다. if($_GET[id]=="admin") // 해당 변수의 값이 'admin'일 경우 { @solve(26,100); //.. 더보기
webhacking.kr [문제 25번] 25번 문제를 풀어보겠다. 해당 문제의 배점은 150point로 확인된다. 해당 페이지를 확인하니 리눅스에서 디렉토리 및 파일을 확인(ls -l)할 때 나오는 화면이다. 조금만 해당 페이지를 분석해보자. 별다른 정보는 찾을 수 없다. 한번 url을 변경하여 해당 페이지에 접속해보자. 해당 파일을 접속해본 결과 메인 페이지의 인풋박스 안에 보여졌던 hello world라는 문자열을 담고있었다. 그리고 한가지더 해당 url에서 hello라는 문자열을 GET방식으로 전달한 결과 보여졌다. 그러나 hello가 아닌 임의의 다른 문자열을 입력해도 hello.txt.의 내용을 보여줬다. 그렇다면 확장자 .txt는 고정되어있고, 만약 해당 파일이 없으면 디폴트로 hello.txt 파일을 보여주는 것으로 확인된다. 이.. 더보기
webhacking.kr [문제 24번] 24번 문제를 풀어보겠다. 해당 문제의 배점은 100point이며, 다소 쉬운 문제로 예상된다. 군말없이 클릭해보자. 현재 접속 클라이언트의 IP주소가 보여지며, Wrong IP!라는 메세지를 보여준다. 무언가 적절한 아이피 주소로 변경한다면, 해당 문제를 풀 수 있을 것 같다. 소스코드 또한 확인해보자. 소스코드에 눈에 띄는 부분이 있다. index.phps 를 제공하고 있다. 의심의 여지없이 확인해보자. 다음과 같은 소스코드를 보여주며, 해당 소스코드를 분석하여, 공격방법을 생각해보자. 코드 분석) 분석에 주석을 구체적으로 달아놓았으니 참고하자. 여기서 눈여겨 봐야할 부분이 '12'와 '7.' '0.'을 공백으로 대체한다는 것이다. 만약 112277..00..00..1 해당 문자열을 대입했을 경우, .. 더보기
webhacking.kr [문제 23번] 23번 문제를 풀어보겠다. 해당 문제의 배점은 200point이다. 23번 문제를 접속해보니, 입력 폼 한가지가 있고, 힌트로는 를 인젝션하라고 한다. 그럼 한번 해당 스크립트를 인젝션해보자. 당연히 이렇게 쉽게 될리가 없다. 특정 문자들이 필터링 되어 있는 것으로 확인된다. 어떤 문자열들이 필터링 되어 있는지 체크해보자. 해당 문자열을 토큰 단위로 쪼개어 체크해보았다. 1) 4) alert 5) ( 6) 1 7) ) 8) ; 9) / 해당 필터링 된 문자들을 확인해보면, 각 특수문자들을 필터링 되어있지 않지만, 'script'와 'alert'문자열들은 필터링 되어있는 것으로 확인됬다. 그렇다면 해당 문자열을 이루고 있는 문자들도 필터링 될까? 다행이 아닌 것으로 확인되었다. 그렇다면 해당 문자들을 nu.. 더보기
webhacking.kr [문제 22번] 오늘은 22번 문제를 풀어보겠다. 사실은 며칠전에 풀었지만, 포스팅하지 못하였다. 해당 문제의 배점은 500point이며, 점수 배점이 높은거로 봤을 때, sql injection문제가 아닐까 조심스레 예상해본다. 해당 페이지 접속시, 다음과 같은 로그인 폼이 보인다. 힌트에 유의해야 할 부분이 있는 데, if($id=='admin') echo("good! Password is $solution"); 해당 부분에서 로그인한 아이디($id)가 'admin'이면 패스워드를 출력하는 것으로 확인된다. 먼저 해당 입력폼의 임의의 아이디를 넣고 로그인해보자. 역시나 Wrong! 이라는 메세지를 보여주면서 로그인 실패한다. 한번 회원가입해볼까? username은 'lidron'으로 password는 'crack'으.. 더보기
랜덤 포레스트를 이용한 식용 가능한 버섯 구분하기 이 포스팅은 서적 '머신러닝, 딥러닝 실전개발 입문'을 참고한 포스팅입니다. 랜덤 포레스트(Random Forest, Randomized Trees)란 학습 전용 데이터를 기반으로 다수의 의사결정 트리를 만들고, 만들어진 의사결정 트리를 기반으로 다수결로 결과를 유도하는 머신러닝 모델 중 하나이다. 의사결정 트리 라는 것은 트리 구조를 하고 있는 그래프인데, 예측과 분류를 수행하는 알고리즘 자체를 의사결정 트리라고 부른다. 귀납적 추론을 기반으로 하는 의사결정 트리는 실무적으로 가장 많이 사용되고 있는 머신러닝 모델 중 하나로 지도학습 모델이다. 의사결정 트리는 주로 불연속 데이터를 다루며 노이즈가 발생해도 중단되거나 엉뚱한 결과를 보여주지 않는 매우 강건한 모델이다. 의사결정 트리의 대표적인 적용 사례.. 더보기
문장의 해당 언어 판별하기(그래프 분석) 이 포스팅은 서적 '머신러닝, 딥러닝 실전개발 입문'을 참고한 포스팅입니다. 관련 포스팅 보러가기문장의 해당 언어 판별하기 이전 포스팅에서 문장이 주어졌을 때, 해당 문장이 어떤 언어로 구성된 문장인지 판별하는 프로그램을 머신러닝을 이용하여 구현하여보았다. 수집한 자료가 많지는 않아도 언어별로 알파벳의 빈도가 다르므로 어느 정도 분류할 수 있다는 사실을 알아냈다. 그렇다면 어느정도로 알파벳의 빈도가 다른지 시각적으로 확인하고 싶은 경우에는 어떻게 해야할까? 파이썬에서는 matplotlib이라는 해당 수치를 그래프로 분석해주는 형태의 라이브러리를 제공하고 있다. 이를 이용해서 확인하여 보자. import matplotlib.pyplot as plt import pandas as pd import json .. 더보기
문장의 해당 언어 판별하기 이 포스팅은 서적 '머신러닝, 딥러닝 실전개발 입문'을 참고한 포스팅입니다. 고대 바빌로니아 인들의 신에 대한 도전(?)으로 인한 바벨탑이 무너지게 되었고, 21세기는 수많은 사람들이 수많은 민족과 국가라는 프레임의 나뉘어 서로 다른 언어를 사용하고 있다. 이러한 소통의 문제는 생각보다 인류의 발전에 큰 걸림돌이 되고 있다. 만약 컴퓨터 소프트웨어를 이용해서 어떤 언어이든지 내가 이해할 수 있는 언어로 번역하여주는 완벽한 번역기를 개발한다면 인류의 발전에 크게 도모할 것으로 예상된다. 만약 스마트 글래스의 동적 문장 번역 기능을 추가한다고 하면 특정 문장을 보고 내가 해당하는 국가의 언어로 동적으로 번역하여 준다는 가정하에 문장을 번역하기전에 어떤 언어에서 어떤 언어로 번역할 것인지를 정해주어야 하는 데.. 더보기