전체보기 108

[LOS] 문제 5. wolfman, 스페이스(빈칸) 우회 기법 이용

?pw=1 or id=%27admin%27 No whitespace가 뜨며 해결되지 않는다. if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); preg_match 함수를 살펴보면 pw에 띄어쓰기가 사용 불가능하고, 띄어쓰기의 URL 인코딩 값인 %20 역시 사용 불가능하다. 빈칸을 우회하는 방법은 은 여러 가지가 있다고 한다. 빈칸을 우회하는 방법은 Tab : %09 Line Feed(\n) : %0a Carrage Return(\r) : %0d 등등. 따라서 답은 ?pw=%27%09or%09id=%27admin

Web/LOS 2018.10.26

[LOS] 문제 4. orc, 함수 이용하여 패스워드 알아내기

pw=%27 or %271%27=%271 했지만 Hello admin 글자만 나오고 해결되지는 않는다. 이유는 if($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); if문으로 pw 결과 값이 같아야지만, 관리자 계정으로 로그인할 수 있다고 한다. 패스워드를 찾기 위해, 먼저 길이를 알아보자. ?pw=%27 or id=%27admin%27 and length(pw)>%276 해보면 if($result['id']) echo "Hello admin"; 즉 Hello admin 부분이 출력된다면, id가 admin이고, 값이 참일 때, 저 결과 값을 띄운다는 것이다. 즉, 패스워드가 6 이상이다. 라는 것을 알 수 있는 것. 따라서 ?pw=%27..

Web/LOS 2018.10.26

[LOS] 문제 3. goblin, 따옴표 문자 필터링 우회

if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); preg_match 함수는 PHP 4, 5, 7에서 사용되는 함수이고, 정규표현식 중 하나로 이 함수는 패턴이 일치하는 검색 결과를 반환한다고 한다. 3번 문제는 이전 문제들과 같이 필터링을 하지만 한 개의 필터가 더 추가되었다. if(preg_match('/\'|\'/i', $_GET[no])) exit("No Quotes ~_~"); 즉 데이터베이스의 접근을 막기 위해 [ ', ", ' ] 이러한 따옴표 문자들을 필터링한다. 먼저 쿼리문을 살펴보면, id='guest'로 잡혀 있고, 우리가 입력할 수 있는 변수는 no이다. ?no=1을 넣었을 때의 화면 값은 우리가 이 문제를 해결..

Web/LOS 2018.10.26

[LOS] 문제 2. cobolt, 주석 URL 인코딩

pw=md5('') PW가 md5로 해서 암호화가 되어 있다. PHP 코드를 잠깐 보자. if($result['id'] == 'admin') solve("cobolt") 즉, 이 경우에는 쿼리에서 id가 admin이면 문제가 풀린다는 뜻이다. ?id=admin'%23 여기서 %23은 #(주석)의 아스키 코드의 인코딩 값으로 pw=md5('')를 무효화시켜주기 위해 반드시 필요하다. 만약 %23 대신 #(주석)을 넣으면 문제가 풀리지 않는데, ex) ?id=admin'# ( X ) 문자를 인코딩해서 넣어주어야하는 이유는 # 주석과 같은 것들은 URL 상에서 다양한 문제점을 일으킬 수 있기 때문에 반드시 URL 인코딩된 값을 넣어주어야 한다. 오라클 기반의 주석 처리는 #, MYSQL은 -이며, 또한 URL..

Web/LOS 2018.10.26

[LOS] 문제 1. gremlin, URL 인자로 넘겨주는 GET 방식

1번 문제를 보면 PHP 파일 소스를 보여주는데 우리는 이것을 이용해서 SQL Injection 공격을 해야 한다. 왜냐하면 이 PHP 페이지는 PHP 코드로 데이터베이스와 연동시켜주는 페이지이기 때문이다. ( 페이지가 실행되면, SQL 구문을 실행시켜주는 ) 근데 웹은 HTTP 프로토콜로 통신되고, 로그인할 때, ID와 PW는 URL 인자로 넘겨주는 GET 방식을 이용하기 때문에 우리는 URL 뒤에 ?id=a&pw=b 이런 식으로 인자를 넣어주어야한다. 위는 URL 뒤에 ?id=test&pw=test를 넣었을 때다. 즉 PHP 쿼리문을 보면서, URL에 SQL 구문을 넣어주면 된다. 따라서 ?id=a&pw='' or '1'='1' ?id=haha' or '1'='1'%23 역시 가능하다.

Web/LOS 2018.10.26

SQL Injection 개념

SQL Injection 관련 문제 풀이를 하기 전, SQL Injection에 관한 개념을 먼저 알아보기로 했다. SQL Injection이란 말 그대로 SQL 삽입. 즉 코드 인젝션의 한 기법으로 클라이언트의 입력 값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격 방식을 말한다. 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑하지 못했을 경우에 발생한다. 공격이 쉬운데 비해 파괴력이 어마어마하기 때문에 시큐어 코딩을 하는 개발자라면 가장 먼저 배우게 되는 내용이다. 로그인 폼에 아이디와 비밀번호를 입력하면 입력한 값이 서버로 넘억가고, 데이터베이스를 조회하여 정보가 있다면 로그인에 성공하게 된다. 이 때 데이터베이스 값을 조회하기 위해 사용되는 언어를 SQL이라고 하며, 다음과 같이 ..

Web/LOS 2018.10.26

이클립스 톰캣 서버 오류 및 서버 설정

Eclipse 안에 WAS인 Tomcat을 사용하다보면 많은 오류들을 접하게 된다. Server Tomcat v7.0 Server at localhost failed to start. 내 경우에는 위와 같은 오류가 났는데 @WebServlet("/cookie1") 서블릿을 웹서버에 등록하는 WebServlet에 /를 빼먹어서 그렇다 ^_^ 혹시라도 앞에 /를 적어주지 않았는지 다시한 번 살펴보길 바란다... 혹시 아래와 같은 오류가 났을 경우에는 An error occurred. See the log file ... 프로젝트명/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xml 파일을 삭제하면 된다 ^.^ 그리고 간단하게 서버 생성하고 환경 설정하는 부..

Language/Java, Jsp 2018.07.21

팀뷰어로 컴퓨터 키기 및 원격 제어

원격을 하려고 팀뷰어를 들어갔는데 원격 제어하려고 하는 컴퓨터가 꺼져있거나 팀뷰어가 꺼져있거나 화면이 꺼져있다면? 팀뷰어가 실행되어 있지 않다고 하면서 사용할 수 없다고 한다. 이 문제를 해결하기 위해 팀뷰어에서는 Wake-on-LAN 기능을 지원하고 있다. 설정 방법은 다음과 같다. Wake-on-LAN 기능을 활성화하려면 이 장치를 먼저 계정에 할당해야한다. 마지막으로 TeamViewer ID 부분에 내 PC의 팀뷰어 번호를 입력한다. ex) 111222333이후에 내 PC로 돌아가 계정에 로그인을 하고 팀뷰어를 할 컴퓨터를 선택한 다음,편하게 원격 제어를 하면 된다!

Information 2018.07.21

USB 4GB이상 파일 복사가 되지 않는 이유

USB, 외장하드 등과 같은 이동식 디스크로 자료나 파일들을 복사하거나 옮길 때 4GB 이상의 큰 파일들은 복사가 되지 않는 경우가 있다. 운영체제를 공부하게 되면 자연스럽게 파일 시스템을 접하게 되는데 이 부분이 USB에 4GB이상의 파일이 담기지 않는 이유와 관련이 있다. 데이터 저장과 다양한 설정, 보안 사항과 관련이 있고, 어떤 파일 시스템을 사용하느냐에 따라 운영체제의 호환성이나 단일 파일의 최대 용량, 해당 드라이브의 최대 크기 등이 달라진다. 파일 시스템 종류 FAT : MS-DOS를 사용하던 시절에 개발된 가장 기초적인 파일 시스템으로 특정 드라이브의 최대 크기는 4GB고 특정 파일 한 개의 최대 크기는 2GB다. 만약 16GB 용량을 가지고 있는 USB 메모리를 FAT로 포맷한다면 12G..

Information 2018.07.21