본문 바로가기

컴퓨터 프로그래밍

webhacking.kr [문제 24번] 24번 문제를 풀어보겠다. 해당 문제의 배점은 100point이며, 다소 쉬운 문제로 예상된다. 군말없이 클릭해보자. 현재 접속 클라이언트의 IP주소가 보여지며, Wrong IP!라는 메세지를 보여준다. 무언가 적절한 아이피 주소로 변경한다면, 해당 문제를 풀 수 있을 것 같다. 소스코드 또한 확인해보자. 소스코드에 눈에 띄는 부분이 있다. index.phps 를 제공하고 있다. 의심의 여지없이 확인해보자. 다음과 같은 소스코드를 보여주며, 해당 소스코드를 분석하여, 공격방법을 생각해보자. 코드 분석) 분석에 주석을 구체적으로 달아놓았으니 참고하자. 여기서 눈여겨 봐야할 부분이 '12'와 '7.' '0.'을 공백으로 대체한다는 것이다. 만약 112277..00..00..1 해당 문자열을 대입했을 경우, .. 더보기
webhacking.kr [문제 22번] 오늘은 22번 문제를 풀어보겠다. 사실은 며칠전에 풀었지만, 포스팅하지 못하였다. 해당 문제의 배점은 500point이며, 점수 배점이 높은거로 봤을 때, sql injection문제가 아닐까 조심스레 예상해본다. 해당 페이지 접속시, 다음과 같은 로그인 폼이 보인다. 힌트에 유의해야 할 부분이 있는 데, if($id=='admin') echo("good! Password is $solution"); 해당 부분에서 로그인한 아이디($id)가 'admin'이면 패스워드를 출력하는 것으로 확인된다. 먼저 해당 입력폼의 임의의 아이디를 넣고 로그인해보자. 역시나 Wrong! 이라는 메세지를 보여주면서 로그인 실패한다. 한번 회원가입해볼까? username은 'lidron'으로 password는 'crack'으.. 더보기
webhacking.kr [문제 21번] 잠깐 여행을 다녀오느라 문제풀이를 하지 못하였다. 오늘은 웹해킹 21번 문제를 풀어보겠다. 배점은 250point이다. 해당 문제 클릭 다음과 같이 BLIND SQL INJECTION이라는 힌트가 주어져있고, 인풋박스가 한가지 있다. 해당 문제는 BLIND SQL INJECTION기법을 이용하여 풀이하는 문제로 예상된다. 실제로 데이터를 입력해보자. 1~10까지 차례대로 입력해보았다. 1과2는 참(TRUE)이였고, 3~10까지는 거짓(FALSE)이였다. 또 한가지 입력시 URL을 통해 GET방식을 통해 서버에 전달되는 정보가 무엇인지 확인해보았다. no값 말고도 id와 pw가 전달되어지는 것을 확인하였다. 이를 통해 예상해볼 때 정보를 가져오는 테이블은 아이디와 비밀번호를 저장해둔 데이터 테이블이고 구조.. 더보기
webhacking.kr [문제 15번] 15번 문제를 풀어보겠다. 해당 문제의 배점은 50point이다. 클릭해보자. 해당 메세지박스가 출력되며 바로 튕긴다. 그리고 바로 어떤 페이지가 보였다가 다시 돌아온다. 너무 빨라서 확인할 수 없다. 하지만 찰나의 순간에서 단축키를 이용하면 확인할 수 있다. 페이지 소스 보기의 해당 단축키를 확인하면, Ctrl+U이다. 해당 메세지 박스가 떳을 때 빠르게 단축키를 눌러보자. 다음과 같은 소스코드 페이지를 확인할 수 있다. 그렇다면 해당 문서에 출력되는 문자열 "password is off_script"를 확인할 수 있다. 너무 간단하지만 Auth들어가서 off_script를 입력해보자. 더보기
webhacking.kr [문제 13번] 3번째 라인으로 넘어가서 문제 13번을 풀어보겠다. 해당 문제의 배점은 1000point이며 지금까지 나온 문제 중 제일 높은 배점을 갖고있다. 클릭해보자. SQL INJECTION기법으로 푸는 것으로 예상되며 힌트로 select flag from prob13password라고 주어져 있다. 그렇다면 시험삼아 인젝션을 시도해보자. 몇가지 문자들이 필터링 되어있는 것 같다. 다사다난한 삽질(?)이 예상된다. 임의로 여러가지를 테스트해보자. 1) 0을 입력시 아무런 반응이없다. 2) 1을 입력시 3) 2를 입력시 4) 2이상을 입력시 해당 결과를 토대로 예상해보면 result가 1일때는 참 0일때는 거짓으로 나온다고 생각된다. 해당 가설을 검증해보자. no=2 or 1 (참) 이라는 쿼리를 보내서 해당 결과.. 더보기
컴퓨터 프로그래밍 과제#1 1. #include #define ASCIIGAP 48 int main(void) { char c_num1, c_num2; int num1, num2; int sum; printf("합산할 숫자 두개를 입력 : "); scanf("%c %c", &c_num1, &c_num2); //조건_두개의 문자형(%c) 숫자를 받는다 printf("%d %d\n", (int)c_num1, (int)c_num2); num1 = (int)c_num1 - ASCIIGAP; //형변환 num2 = (int)c_num2 - ASCIIGAP; //형변환 //예외처리 if( !((0 더보기
webhacking.kr [문제 4번] 4번 문제를 살펴보면 해당 점수가 150point로 확인된다. 특정한 문자열을 보여주며 해당 비밀번호를 입력하게 되어있다. YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg== 특정한 문자열을 일반적으로 볼수없는 형태의 문자열이며 무언가 숨겨져있다는 생각이 든다. 그러한 이유에서 조금더 고려해보면 해당 문자열이 암호화 되어있지 않을까라는 전제에 도달한다. 해당 문자열은 마지막에 추가로 '=' padding 문자가 붙게되는 데 이를 통해 base64로 인코딩 되어있다는 것을 알 수 있다. 과연 해당 널패딩이 붙게되면 왜 base64로 인코딩 되어있다고 생각할 수 있을까 base64 인코딩 방식을 확인해보자. base64란 무엇일까? 컴퓨터는 기본적으로 1과 .. 더보기
인공지능, 머신러닝 그리고 딥러닝 2016년 3월 인류에게 있어서 잊지못할 하나의 사건이 발생했다. 알파고와 이세돌 9단과의 바둑 경기에서 이세돌 9단이 승리할 것이라는 모두의 예상과는 달리 알파고(AlphaGo)의 불계승으로 경기는 종료되었다. 과연 인공지능이라는 것이 무엇이기에, 사람의 지혜와 경험을 넘어서는 인류최고의 발명품이라고 불리는 것일까. 그동안의 바둑이라는 스포츠는 컴퓨터가 인간을 뛰어넘을 수 없는 창의적 사고활동이라는 말이 있었다. 이유를 구체적 살펴보면 컴퓨터는 전기 신호를 이용하기 때문에 계산이 엄청나게 빠르지만 그래도 바둑의 모든 경우의 수를 전수조사하기 위한 한계가 있다. 네덜란드의 컴퓨터 과학자 존 트럼프는 바둑판의 격자가 2x2인 경우부터 착수 경우의 수와 해당하는 착수 비를 계산하였다. 결과는 다음과 같았다... 더보기