본문 바로가기

sql injection

(6)
[DIVA] Input Validation Issues - Part 1 (입력값 검증 부재) | 안드로이드 앱 취약점 실습 입력값 검증 부재 취약점은 사용자로부터 입력받은 데이터를 제대로 검증하지 않아 발생하는 보안 취약점이다. 악의적인 사용자가 의도적으로 조작된 데이터를 입력하여 시스템 오류, 데이터 유출 등 다양한 문제를 일으킬 수 있다.입력값 검증 부재의 대표적인 취약점으로 웹 해킹때 배웠던 SQL Injection과 XSS가 있다. 취약점을 찾아보자목표 : 유저 이름을 모르는 상태로 모든 유저의 정보를 access 해야 한다. 유저는 총 3명이고, 단 한 번의 검색으로 모두 확인해야 한다.의미 없이 123을 입력했떠니 not found라고 뜬다. 이 상태에서는 유저 정보도 모르고 아무것도 확인할 수 없으니  로그캣 정보를 이용해보기로 한다.싱글쿼터를 넣고 검색했더니 로그캣에 SQL 쿼리문이 그대로 뜬다. 조건절을 참으..
[SQL Injection] CTF - SQL Injection Point 2 문제풀이 게시판 검색창에 작성자로 sdf를 검색하면 다음과 같이 파라미터가 전달되는 것을 확인 전달되는 파라미터를 확인했으니 db에서 사용하는 SQL 문을 대략적으로 추측해보면 select * from 테이블 where username like '%sdf%' and ~~~ 이런 식일것 같다. 추측한 sql 문을 이용해보자 option_val에 1=1 and username을 입력하면 select * from 테이블 where 1=1 and username like '%sdf%' and ~~~ 1=2 and username을 입력하면 select * from 테이블 where 1=2 and username like '%sdf%' and ~~~ 확인해보자 option_val에 1=1 and username을 입력했을..
[SQL Injection] CTF - SQL Injection Point 1 문제풀이 사실 푼건 진작인데 기억이 가물가물해가서 정리해본다 기억하자. SQL Injection에서는 참/거짓에 따라 달라지는 응답을 확인해야함을. 마이페이지에 접속해보면 쿠키의 user에 id가 담겨 있는 것을 확인 user에 sdf' and '1'='1과 sdf' and '1'='2를 넣었을 때 info의 placeholder 값이 다른 것을 확인 ==> sqli 취약점 발견 취약점을 찾았으니 어떻게 정보를 빼낼지 생각해야한다. 여기선 error based나 union based는 사용할 수 없으므로 blind로 가야한다. 파이썬으로 자동화 코드를 작성해서 추출해보자. import requests import urllib.parse url = "http://ctf.segfaulthub.com:7777/sqli..
[SQL Injection] Union Based SQL Injection란? (공격 절차, 실습) Union Based SQL Injection : Union 키워드를 사용해서 원래 서버에서 사용되는 쿼리에 추가 쿼리를 요청해서 추가적인 정보를 얻는 공격 현재 페이지에서 사용되는 테이블의 다른 컬럼에 저장된 데이터나 현재 사용되는 테이블 외의 테이블에 있는 데이터를 가져올 수 있다. Union Based SQLi를 사용하기 위해서는 두 쿼리에서 출력되는 컬럼 수가 같아야 한다. (https://sqltest.net/ 이 사이트에서 간단하게 확인할 수 있다.) [공격 절차] 1. SQLi 포인트 찾기 union sqli가 통하기 위해서는 데이터가 웹 페이지에 출력되어야 한다. 대표적으로 검색 페이지가 있다. 여기서는 id 검색 페이지를 활용할 것이다. (최종 목적은 flag를 획득하는 것이다.) id ..
[SQL Injection] Error Based SQL Injection란? (공격 절차, 실습) Error Based Sql Injection : 데이터베이스 에러 메시지를 활용하여 데이터베이스에 대한 정보를 획득하는 공격 기법 보통 개발자는 개발을 할 때 어떤 코드에 오류가 있는지 확인하기 위해 일부러 에러 메시지가 출력되게 설정한다. 이것이 서버를 운영할 때 그대로 이어지는 경우가 많은데, 공격자는 이 에러 메시지를 악용한다. 에러를 유발하는 SQL 문을 삽입하여 도출되는 에러 메시지를 통해 공격자는 데이터베이스의 구조와 정보를 파악할 수 있다. DB 종류에 따라 다양한 문법과 함수를 활용할 수 있다. [공격 절차] 1. SQL Injection 취약점 찾기 > 조작된 sql문을 삽입했을 때도 데이터가 출력되는지 확인 > 싱글쿼터를 하나 더 넣었을 때 에러 메시지가 출력되는지 확인 2. 에러를 ..
SQL Injection 공격이란? (종류, 방어기법, 공격 시나리오) 1. SQL Injection이란? : SQL Injection 공격은 클라이언트 입력값에 임의의 SQL 문을 주입해서 데이터베이스에 저장된 중요한 데이터를 가져오는 공격이다. 난이도가 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있다는 특징이 있다. 인젝션 공격은 OWASP Top10에 항상 상위권에 속해 있고, 주요정보통신기반시설 기술적 취약점 분석 가이드에서도 찾아볼 수 있다. (참고로 OWASP은 악용가능성, 탐지가능성 및 영향에 대해 빈도수가 높고 보안상 영향을 크게 줄 수 있는 10가지 웹 애플리케이션 보안 취약점 목록이다. 3~4년 주기로 발표된다.) 2. 공격 유형 (세세한 공격 방식을 설명하기에는 글이 너무 길어질 것 같아서 여기선 각 공격의 발생 환경 등 대략적인 설명만 ..