본문 바로가기
300x250

분류240

[SQL Injection] - 테이블에서 검색을 통해 관리자 계정 탈취 // PortSwigger 예제 이번 문제도 Union Sql Injection을 이용해 공격한다 다만 조금 다른점은 이전 문제들과 다르게 관리자 계정을 찾아내야 한다 위 본문을 읽어보면 'username'과 'password'라는 컬럼이 존재하며 두 컬럼은 'users'라는 테이블에 존재한다고 한다 그럼 우리는 users라는 테이블에서 username과 password 컬럼을 union을 이용해 검색해주기만 하면 된다 문제풀이 화면으로 들어왔다 별 다를게 없어보이니 Union Sql injection을 수행한다 username과 password 두 컬럼을 users 테이블에서 검색하려면 아래의 코드를 사용한다 'union select username,password from users-- 코드 삽입이 성공적으로 진행되면 에러가 발생하.. 2020. 8. 7.
[SQL Injection] - 특정 텍스트를 포함한 열 찾아내기 // PortSwigger 예제 PortSwigger의 Sql Injection 두번째 문제이다 Union Sql Injection이며 지급받는 특정 문자열을 포함하는 컬럼을 찾는듯하다 문제 페이지로 넘어오니 'FK5ILT'라는 특정 문자열을 제공했다 우리는 이 문자열이 포함된 컬럼을 찾으면 된다 동일하게 UNION으로 컬럼의 개수와 자료형을 찾아보자 'UNION SELECT NULL-- --ERROR 발생 'UNION SELECT NULL,NULL-- --ERROR 발생 'UNION SELECT NULL,NULL,NULL-- --코드 삽입 성공 컬럼 개수 3개 하나 그리고 두개의 NULL로 컬럼 개수를 찾아봤지만 에러가 발생했다세개의 NULL을 삽입했을때 코드가 먹혔으니 세개의 컬럼이 존재한다는걸 알수있다 코드가 그대로 삽입되었다 이.. 2020. 8. 7.
웹 해킹을 위한 DB 별 기초 쿼리문 My-SQL version My-Sql의 DB 저장소 INFORMATION_SCHEMA: INFORMATION_SCHEMA는 My-SQL 서버가 운영하는 모든 데이터베이스의 정보를 저장하는 장소이며 DB명, Table명, Column의 자료형과 접근 권한 등 여러 중요한 정보들이 포함되어 있다. My SQL의 기초 문법(조회, 주석) --버전정보 조회 SELECT VERSION(); mysql > --version # 한줄 주석 /* 전체 주석 */ #DB 조회문 SELECT DATABASE(); /*현재 사용중인 DB 명 조회*/ SELECT 1 FROM Information_schema.SCHEMATA WHERE SCHEMA_NAME = 'DBNAME' /*-> 해당 DB 존재여부 확인(있으면 1, .. 2020. 8. 7.
SQL Injection을 위한 SQL기초 구문 모음 ▶SQL Injection Injection ▶ 주입, 삽입하다 SQL ▶ 데이터베이스 관리용 언어 SQL Injection ▶ OWASP 10대 웹 취약점 2020년 기준으로 1순위(Injection)에 기재될 정도로 단순하고 강력한 공격법 SQL의 단위 : 테이블(정보가 속해있는), 열(정보) 1. DB생성 & 주석 문 CREATE DB CREATE DATEBASE testDB; --주석 testDB라는 DB를 생성(Create) 하는 구문입니다. 2. DB 사용 USE USE testDB; 생성된 testDB를 사용(Use)선언을 합니다. 3. 테이블 생성 후 값 넣기 CREATE TABLE CREATE TABLE testTable( data1 INT, PRIMARY KEY, data2 DATETI.. 2020. 8. 6.
[SQL Injection] - 쿼리에서 반환되는 열의 개수 구하기 // PortSwigger 예제 SQL Injection 악의적으로 짜인 SQL문을 삽입해 실행시켜 비정상적인 행동을 유발하는 공격기법 SQL Injection 공격을 수행하기 위해 요구되는 조건 에러메시지가 웹에서 발생되지 않아야함 : 에러메시지를 통해 공격에 필요한 데이터베이스의 테이블과 칼럼명을 받아올수 있기때문 injection이 발생하지 못하도록 시큐어 코딩이 되어있지 않을경우 SQL injection 기법은 OWASP(Open Web App Security Project) 에 기재된 해킹기법들중 1순위에 해당할만큼 강력한 취약점입니다. 년도별로 1위에서 3위권에 왔다갔다 하지만 Injection 기법 자체가 범용성이 크고 무궁무진한 취약점이기에 위험성만큼은 계속 상위권일듯 합니다. 그럼 BurpSuite 제작사인 PortSw.. 2020. 7. 31.
[XSS] XSS(Cross Site Scripting)공격 실습 - (Dreamhack 실습예제) XSS(CrossSiteScripting) 서버의 응답에 공격자가 삽입된 악성 스크립트를 받은 사용자의 웹 브라우저에서 악성 스크립트가 실행되는 공격 XSS 공격을 수행하기 위해 요구되는 조건 악성 script가 삽입될 수 있는 낮은 검증 수준 정보가 웹 사이트에 출력될수 있는 낮은 검증 수준 그 외 다양한 XSS 변종 기법 Stored XSS : 게시판에 글을 작성하여 관리자에게 읽도록 유도하는 악성 script 실행 기법 Reflected XSS : 말 그대로 악성 script를 반사시킨다 주로 메일로 전송시키는 기법 Dreamhack의 XSS-1 문제입니다. XSS 취약점에 관련된 웹 해킹 문제입니다. 제공된 사이트에 접속해보겠습니다. /xss /memo /flag 세 개의 링크가 존재합니다. cs.. 2020. 7. 30.
[CSRF] CSRF(Cross Site Request Forgery)공격 실습 - (DreamHack 실습예제) CSRF(CrossSiteRequestForgery) 사용자의 의도와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 HTTP 요청을 하는 행위 CSRF 공격을 수행하기 위해 요구되는 조건 ▼ 웹 사이트의 인증방식은 쿠키를 이용해야 한다 혹은 예측 가능한 토큰 사용 공격자가 알지 못하는 파라미터가 존재하면 안 된다 (공격은 전부 정상적인 경로로 수행된다) Dreamhack의 CSRF-1 문제입니다. 제공된 사이트로 먼저 접속해보겠습니다. 4개의 링크가 존재합니다 /csrf /memo /notice flag /flag /csrf는 현 사이트에 존재하는 csrf 취약점에 대한 힌트를 제공합니다. 위 url창에 입력된 주소를 보면 가 입력되었으나 alert(1)로 출력되었습니다. 즉 .. 2020. 7. 30.
[C] C 중급 2차원 배열과 포인터배열 예제 C의 배열(array)은 배열 자체 그대로 사용하기에는 응용력이 많이 떨어지는 문법입니다. 그래서 2차원 배열로 확장하여 사용하곤 하는데 2차원 배열은 행렬논리적 구조를 가지지만 실제 메모리의 기억공간에서는 1차원 배열의 형태로 존재합니다. 그럼 C 배열의 기본적인 초기화 및 사용법을 알아보겠습니다.​ 2차원 배열의 선언 및 초기화 #include int main() { int double_array[2][3]={{1,2,3},{4,5,6}}; for(int i=0; i> 1 2 3 4 5 6 int double_array[2][3] 는 2차원 배열입니다. {{1,2,3}, {4,5,6}} 의 값을 가지고 있으며 2*3의 크기를 가지고 있습니다. 즉 원래 배열의 선언이 {} 괄호 내에 값만 삽입하는 형태.. 2020. 7. 27.
cookie를 통한 웹해킹 - DreamHack예제(cookie) Dreamhack의 cookie 문제입니다. Web hacking 카테고리의 워게임 문제 중 가장 쉬운 문제니 입문자들이 한번 풀어보면 좋을 듯합니다. Cookie란 사용자의 정보를 로컬 파일에 정보로 남겨놓은 파일을 일컬어 부른다 Cookie 문제에 접속하면 위 사이트가 나옵니다. Cookie 문제라고 대놓고 나와있으니 쿠키값을 변조하는 문제일 가능성이 농후합니다. 먼저 문제와 함께 동봉된 코드를 살펴보도록 합시다. Python의 웹 프레임워크인 Flask기반으로 작성되었으며 어느 정도는 Flask 문법을 알아야 해석이 편할 것 같습니다. 현재 존재하는 계정은 11번째 줄의 guest 계정과 암호가 FLAG로 래핑 된 admin계정 두 가지가 존재합니다. 먼저 guest 계정으로 로그인해봅시다. 로그인.. 2020. 7. 25.
[C] c의 정적변수와 외부변수 변수의 종류 정적(static) 변수 외부(extern) 변수 변수의 종류는 크게 두 가지로 나눌 수 있습니다. 이러한 분류가 필요한 이유는 변수의 영역의 차이에 따른 용도가 존재함과 동시에 함수간 데이터 전달이 더 원할해야 하기 때문입니다. 정적 변수 (Static Variable) #include int *print_ex(); int main() { int *count=0; count=print_ex(); printf("외부함수 호출후 메인함수에서의 값 : %d\n", *count); return 0; } int *print_ex() { static int sum=5; return ∑ } >>> 외부함수 호출후 메인함수에서의 값 : 5 위 코드는 정적 변수를 외부 함수에서 선언하여 해당 값을 포인터로.. 2020. 7. 25.
300x250