SQL Injection (6)

밍기적·2022년 12월 26일
0

웹해킹

목록 보기
17/35

Blind SQL 인젝션의 경우 일반적인 SQL 인젝션과 다르게 SQL 오류를 발견할 수 없습니다

그러므로 작은 따옴표에 의존
참과 거짓 구문을 활용하여 SQL 오류를 확인해야 합니다

해당 사이트는 User ID를 입력하면 First name과 Surname을 보여줍니다

User ID를 변경할 때마다 URL에 존재하는 id파라미터의 값이 변경되므로 URL을 이용하여 참과 거짓 구문을 넣어보았습니다

True Statement


SQL이 어떻게 사용되는지 예상을 하고 이전과 비슷하게 동작할 것이라고 생각한 뒤 진행했습니다

1' AND 1=1#

위 구문으로 작성시 이전에 보여줬던 유효한 페이지가 오류 없이 보여질 것이라고 생각합니다

마찬가지로 URL 인코딩을 진행한 #을 작성합니다

유효한 페이지가 보여졌습니다

False Statement


이제 위와 다르게 거짓 구문을 작성했습니다

예를들어 1=2와 같은 구문을 사용시 유효한 페이지가 아닌 오류 페이지가 나타난다면 SQL 인젝션이 가능하다는 뜻입니다

1' AND 1=2#

유효 페이지가 나타나지 않고 잘못된 페이지, 즉 아무페이지도 나타나지 않았습니다

ORDER BY절 사용하기


order by를 사용해서 확인도 가능합니다

참인 구문으로 order by 1로 확인이 가능하며 거짓 구문으로 확인하기 위해서 큰 숫자를 넣어 잘못된 페이지를 확인하면 SQL 인젝션이 존재한다고 할 수 있습니다

union 사용


이전과 동일하게 information_schema 테이블을 이용하여 존재하는 테이블명을 출력할 수 있습니다

Blind_SQL과 일반적인 SQL 인젝션의 차이는 해당 취약점을 발견하는 방식에 차이가 있습니다

작은 따옴표에 의지하는 것이 아닌 참과 거짓 구문을 이용하여 찾는 방식을 사용합니다

일반적으로 참과 거짓 구문을 사용하여 SQL 인젝션을 확인하는 것이 좋습니다

왜냐하면 작은따옴표로 확인한다면 Blind SQL 인젝션을 발견하지 못하기 때문입니다

0개의 댓글