union based (4) 썸네일형 리스트형 [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] Blind SQL Injection이란? (공격 절차, 실습) Blind SQL Injection: 데이터베이스 에러 메시지나 데이터가 직접적으로 노출되지 않을 때 사용하는 공격 기법으로 쿼리 결과 즉 서버의 참/거짓 반응을 통해 데이터를 얻어내는 공격이다. Blind SQLi는 어떠한 데이터나 에러도 뜨지 않는 경우 참 거짓 반응을 통해 원하는 정보를 추출한다. DB 이름의 첫번째 글자가 a 맞는지 b가 맞는지... 이런 식으로 한 글자씩 알아내야해서 공격에 오랜 시간이 소요되므로 자동화가 필수인 공격이다. 여기서는 간략한 절차만 담을 것이기 때문에 자동화 스크립트는 생략한다. [공격 절차] 1. SQL Injection 포인트 찾기먼저 서버에서 어떤 SQL 구문을 사용하는지 생각한다. 다음은 id 검색 페이지에서 플래그를 획득하는 과정이다. 서버에서는 selec.. [SQL Injection] Union Based SQL Injection란? (공격 절차, 실습) Union Based SQL Injection : Union 키워드를 사용해서 원래 서버에서 사용되는 쿼리에 추가 쿼리를 요청해서 추가적인 정보를 얻는 공격 현재 페이지에서 사용되는 테이블의 다른 컬럼에 저장된 데이터나 현재 사용되는 테이블 외의 테이블에 있는 데이터를 가져올 수 있다. Union Based SQLi를 사용하기 위해서는 두 쿼리에서 출력되는 컬럼 수가 같아야 한다. (https://sqltest.net/ 이 사이트에서 간단하게 확인할 수 있다.) [공격 절차] 1. SQLi 포인트 찾기 union sqli가 통하기 위해서는 데이터가 웹 페이지에 출력되어야 한다. 대표적으로 검색 페이지가 있다. 여기서는 id 검색 페이지를 활용할 것이다. (최종 목적은 flag를 획득하는 것이다.) id .. 이전 1 다음