본문 바로가기

java

webhacking.kr [문제 11번] 웹해킹 11번 문제를 풀어보겠다. 해당 문제의 배점은 300point이다. 해당 문제를 클릭하면 다음과 같은 정보가 주어진다. 해당 힌트를 분석해보자. $pat="/[1-3][a-f]{5}_.*CLIENT_IP.*\tp\ta\ts\ts/"; if(preg_match($pat,$_GET[va])) { echo("Password is ????");} 간단하게 해석해보면 $pat란 변수에 정규표현식을 담고 GET방식으로 전해진 val이라는 변수에 해당 정규표현식에 맞는 문자열이 전해지면, Password를 출력하는 것으로 확인된다. 정규표현식을 하나하나 살펴보자. 1. [1-3] [1-3] : 1~3사이의 문자 중 하나를 찾음 예시) 1, 2, 3 2. [a-f]{5} [a-f]{5} : a~f사이의 문자 중.. 더보기
webhacking.kr [문제 9번] 중간에 알바면접이 있어서 포스팅을 못했다. 미루고 미루던 웹해킹 9번 문제를 풀어보겠다. 9번문제 무려 900point로 전체 문제 중 두번째로 점수 배점이 높다. 해당 문제를 풀면 대략적인 다른 문제들의 난이도를 예상할 수 있을 것으로 예상된다. 문제 클릭시 다음과 같은 페이지를 보여준다. 소스코드를 확인해보자. 별다른 정보는 없지만 각 페이지가 no=1, no=2, no=3로 하이퍼링크 되어 있는 것을 확인할 수 있다. 실제 각각의 페이지를 확인해보자. 1번 페이지 2번 페이지 3번 페이지ㅓ 다음과 같은 페이지를 분석해보니. 데이터베이스에서 no일때의 각각의 id값을 가져와 화면에 뿌려주는 것으로 확인된다. 또한 no=3일때의 id값의 길이는 11로 힌트가 주어졌다. 과연 해당 가설이 맞는지 no=4.. 더보기
webhacking.kr [문제 7번] 두번째 라인의 첫번째 문제인 7번 문제를 풀어보자. 문제의 점수는 300point이다. auth 버튼을 클릭해보자. 당연히 나에게 인증권한을 쉽게 줄리가 없다. 이제 한번 소스코드를 확인해보자. 소스코드를 확인해본 결과 val값이 2일때 admin mode를 주어진다고 나와있으며 해당 서버의 php파일은 index.phps로 되어있다. 한번 val값을 2로 설정한 후 해당 페이지를 확인해보자. 다시 해당 페이지의 소스코드를 확인해보자. 별 내용이 없으므로. 이제 index.phps를 확인해보자. 해당 소스코드를 보니 라는 힌트와 함께 언뜻봐서 쿼리를 날리는 코드가 보인다. 생각보다 소스코드가 길다. 이제 해당 소스코드를 분석해보자. 해당 파트를 확인해보면 GET방식으로 넘어온 변수 val값을 받아서 go.. 더보기
webhacking.kr [문제 5번] 문제 5번을 풀어보겠다. 300point의 5번 문제를 클릭하자. 웹 페이지가 단순하게 두개의 버튼만을 가지고 있다. 로그인 페이지가 보이고 일반적으로 UI가 상단은 아이디 하단은 비밀번호로 생각되어 아무거나 치고 로그인 해보자. 예상했던 결과다 싶이 admin이 아닐경우 로그인이 되지않는다고 한다. admin과 비밀번호를 입력한 후 로그인해보자. 이전과는 다른 메세지를 보인다. 그렇다면 한번 회원가입을 클릭해보자. Join버튼을 누른결과 접근이 거부되었다는 메세지가 뜬다. 소스코드를 확인해보자. 소스코드를 확인하여보니 Join버튼 클릭시 당연히 no()라는 함수가 실행되어 'Acess_Denied'라는 메세지 박스를 띄운다. 여기서 유의해봐야 할 점이 디렉터리의 구조이다. login버튼 클릭시 들어가지.. 더보기
webhacking.kr [문제 4번] 4번 문제를 살펴보면 해당 점수가 150point로 확인된다. 특정한 문자열을 보여주며 해당 비밀번호를 입력하게 되어있다. YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg== 특정한 문자열을 일반적으로 볼수없는 형태의 문자열이며 무언가 숨겨져있다는 생각이 든다. 그러한 이유에서 조금더 고려해보면 해당 문자열이 암호화 되어있지 않을까라는 전제에 도달한다. 해당 문자열은 마지막에 추가로 '=' padding 문자가 붙게되는 데 이를 통해 base64로 인코딩 되어있다는 것을 알 수 있다. 과연 해당 널패딩이 붙게되면 왜 base64로 인코딩 되어있다고 생각할 수 있을까 base64 인코딩 방식을 확인해보자. base64란 무엇일까? 컴퓨터는 기본적으로 1과 .. 더보기
안드로이드 어플리케이션 [알러빗가계부] 어플리케이션 이름 : 알러빗가계부 개발 기간 : 2018.1.12 ~ 2018.1.18 사용 기술 : ■ 개발 환경 : Windows7 64bit Professional + Android Studio 3.0.1 ■ 개발 언어 : JAVA ■ 데이터 베이스 : Android sql lite ■ 레이아웃 : LinearLayout + GridView 기획의도 : 별을 세는 것 보다는 돈을 세는 것의 관심 있는 필자의 친구 정양은 요즘들어 '김생민의 영수증'이란 TV프로를 재미있게 보고 있다고 하였다. 매날의 지출에 대해 얼마나 효율적으로 돈을 사용하고 있는 가와 앞으로 얼마나 계획적으로 사용할 수 있도록 (어느 기간까지 얼마를 사용하면 되는가) 등을 간단하게 평가를 할 수 있는 어플리케이션이 있으면 좋겠다고.. 더보기
인공지능, 머신러닝 그리고 딥러닝 2016년 3월 인류에게 있어서 잊지못할 하나의 사건이 발생했다. 알파고와 이세돌 9단과의 바둑 경기에서 이세돌 9단이 승리할 것이라는 모두의 예상과는 달리 알파고(AlphaGo)의 불계승으로 경기는 종료되었다. 과연 인공지능이라는 것이 무엇이기에, 사람의 지혜와 경험을 넘어서는 인류최고의 발명품이라고 불리는 것일까. 그동안의 바둑이라는 스포츠는 컴퓨터가 인간을 뛰어넘을 수 없는 창의적 사고활동이라는 말이 있었다. 이유를 구체적 살펴보면 컴퓨터는 전기 신호를 이용하기 때문에 계산이 엄청나게 빠르지만 그래도 바둑의 모든 경우의 수를 전수조사하기 위한 한계가 있다. 네덜란드의 컴퓨터 과학자 존 트럼프는 바둑판의 격자가 2x2인 경우부터 착수 경우의 수와 해당하는 착수 비를 계산하였다. 결과는 다음과 같았다... 더보기
자바스크립트(JavaScript)란? 자바스크립트를 공부하기에 앞서 자바스크립트라는 언어는 어떤 언어이며, 다룰 수 있다면 어떠한 이점이 있는지 정리해보겠다. 소개 자바스크립트는 웹 브라우저에서 동작하는 스크립트 언어이다. 이전 까지는 웹페이지 제작에 있어 동적인 구동 예를들어 로그인 알림이나 에러표현 메세지 박스 같은 부분을 위하여 사용된 다소 보조적인 기능을 수행하기 위한 용도로 사용된 언어였다. 하지만 시간이 지나면서 웹 아키텍처에도 여러가지 크고 작은 변화가 일어났다. 과거에 서버에서 담당하던 역할들의 상당 부분이 웹 브라우저로 이동하였고, 이 변화의 중심에는 자바스크립트라는 언어가 축이 되었다. 이러한 동향의 맞게 개발자들은 자바스크립트에 대한 관심이 높아졌으며 Stack Overflow에서는 2013년부터 2016년까지 진행한 설.. 더보기