안녕하세요. 크리핵티브 강사님 실습4-1 강의 진행 중에 오류 사항이 발생하여 질문 드리게 되었습니다. [공유해주신 환경 구성 현황] --> 현재 저는 공유해주신 자료(환경)를 C:\apache-tomcat-8.5.90-windows-x64\apache-tomcat-8.5.90\webapps\ROOT 폴더 아래에 압축을 해제 하였으며 강의 내용 대로 해당 디렉토리 이름을 practice로 변경 하였습니다. --> 환경의 동작 자체는 문제가 없었습니다. [문제상황] --> 해당 다운로드 버튼을 클릭해서 동작 시키면 --> 다운로드 코드가 그대로 나옵니다. --> burp suite에서 캡처를 해서 보면 그대로 다운로드 코드가 response로 오는 것을 알 수 있습니다. --> 강의 내용대로 ㅇ filename=/Chrysanthemum.jpg ㅇ filename=Chr/ysanthemum.jpg ㅇ filename=%5cChrysanthemum.jpg ㅇ filename=Chr%5cysanthemum.jpg 등등을 시도해도 동일하게 그냥 download 코드가 나오고 있습니다. --> 그래서 강의 내용을 그대로 수행해도 filedownload 실습을 진행하기가 어렵습니다. 참고로 강사님이 공유해주신 이미지 파일 위치는 수정하지 않았습니다. [실습 대상 이미지 파일 위치] --> practice -> prob1-> upload 아래에 Chrysanthemum.jpg 파일 위치 --> 어느 부분에서 문제가 발생한 것 이며 어디를 수정해야 하는지 가르쳐 주시면 감사하겠습니다.
모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
1) 실습 7-4 MySQL에서 상세보기 메뉴에서 순차적으로 데이터를 호출하기 위해 limit 절을 활용하였습니다. [실습 쿼리문] http://localhost/board/mysql/view.php?idx=7 and 1=2 union select null,schema_name,null,null,null,null,null from information_schema.schemata limit 2,1%23 [쿼리문 실행 결과] 1. 상세보기 page의 Title 컬럼에 login_example 을 확인 할 수 있었습니다. 2. limit 3,1을 하면 상세보기 page의 Title 컬럼에 mysql을 확인 할 수 있었습니다. 2) 실습 7-5 MSSQL에서 상세보기 메뉴에서 순차적으로 데이터를 호출하기 위해 not in과 서브쿼리문을 이용하였습니다. [실습쿼리문] http://localhost/board/mssql/view.php?idx=6 and 1=2 union all select null,name,null,null,null,null,null from master.sys.databases where name not in(select top 0 name from sysdatabases)-- [쿼리문 실행 결과] 1. 상세보기 page의 Title 컬럼에 master 를 확인 할 수 있었습니다. 2. 서브쿼리의 top 0 대신 top 1으로 숫자를 올리면 tempdb라는 2번째 데이터베이스 이름을 확인 할 수 있었습니다. 3) 실습 7-6 Oracle에서 상세보기 메뉴에서 순차적으로 데이터를 호출하기 위해 rownum과 서브쿼리 기능을 이용했습니다. [실습쿼리문] http://localhost/board/oracle/view.php?idx=61 and 1=2 union all select null,table_name,null,null,null,null,null from(select rownum r, table_name from all_tables)tb where tb.r=2-- [쿼리문 실행결과] 1. 상세보기 page의 Title 컬럼에 SYSTEM_PRIVILEGE_MAP 두번재 table이름이 나온 것을 확인 할 수 있습니다. 질문1)강의 종료 후 제가 제대로 과제를 수행한건지 궁금합니다. 추가적으로 더 확인해 봐야 할 것이 있을 까요? 질문2) MSSQL에서 order by 정렬 기능이나 row_number()함수를 이용해서 순차적으로 출력하는 쿼리문을 만들 수 있을까요?(섹션 4에서 MSSQL에서 순차정렬이 가능한 여러 방법의 내용 처럼) --> 저는 아무리 생각해도 적절한 쿼리문이 떠오르지 않아서 질문드립니다.
모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
안녕하세요. 크리핵티브님 MSSQL에 대한 Error-based 공격 실습 관련 질문 사항이 발생해서 질문 드리게 되었습니다. Injection 공격 검증을 할 때 사용하는 쿼리문 내용 중 test%' and '%'=' 구문이 있는데 이런 구문이 있는 이유가 index.php 의 내용을 보면 아래와 같은 코드로 만들어져서 있는 것으로 알고 있습니다. [index.php의 일부 코드] (생략) $query = "select * from {$tb_name}"; } else { if($search_type == "all") { $query = "select * from {$tb_name} where title like '%{$keyword}%' or writer like '%{$keyword}%' or content like '%{$keyword}%'"; } else { $query = "select * from {$tb_name} where {$search_type} like '%{$keyword}%'"; } --> 즉 우리가 입력한 test%' and '%'=' 은 if문 안에 들어가서 $query의 '%{$keyword}%'에 들어가게 되어서 최종적으로는 $query = "select * from board..tb_board where '%test%' and '%'='%'"; 이 되어서 test 이름이 들어간 모든 게시물을 보여주는 것으로 알고 있습니다. 공격 검증에 사용되는 test%' and '%'=' 구문은 현재 우리가 index.php의 $query의 내용을 알고 있어서 이렇게 test%' and '%'=' 작성 할 수 있지만 실제 실무에서도 이게 활용이 가능한지 궁금합니다. 혹시 대부분의 실무 환경도 $query = "select * from {$tb_name} where {$search_type} like '%{$keyword}%'"; 같은 구조로 개발이 되어서 대부분의 실무 환경에도 test%' and '%'=' 구문을 공격 검증 페이로드로 사용할 수 있는지 여부가 궁금합니다.
모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
안녕하세요. 크리핵 티브님 제가 개인적으로 JDBC와 JSP를 이용한 개발 학습을 하려고 하는데 sysdba 권한이 있는 계정 접속이 필요합니다. 그래서 제공해주신 웹 환경의 Oracle DB의 sys계정의 password를 가르쳐 주셨으면 합니다. 확인 후 답변 부탁드리겠습니다. 감사합니다.
모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
안녕하세요. 크리핵 티브님 강사님 강의를 따라 들으면서 LoS 문제를 풀다가 php 코드에서 한가지 질문 사항이 생겼습니다. 대부분 LoS 문제에 보면 if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); <-- 이런 구문이 있는데 여기서 필터링 하는 대상 중 prob , _ . / i 를 필터링 한다고 하는데 prob는 무엇을 의미 하는지 모르겠습니다. 그냥 prob가 들어간 문자열을 필터링 한다고 알면 되나요? 아니면 prob가 들어간 어떤 기능의 SQL 구문을 필터링 한다고 알면 되나요?