웹 해킹/SQL Injection
인증 우회 공격을 통한 비밀 게시글 무단 열람 실습
Kwon Oh! JUN
2022. 8. 9. 21:44
비밀글을 인젝션을 통해 확인해 볼 것이다.
비밀글을 클릭하면 패스워드를 입력해야 되는데 여기에 인젝션을 적용해 볼 것이다.
쿼리를 예상해보면
select * from tb_board where idx=8 and password='[password]' |
글 번호 idx와 password가 일치하면 비밀글을 열람할 수 있는 방식일 것이다.
먼저
select * from tb_board where idx=8 and password='' or 1=1-- ' |
idx=8 and password='' | 참 and 거짓 = 거짓 |
(idx=8 and password='') or 1=1 | 거짓 or 참 = 참 |
idx와 pasword가 먼저 and 처리되면서 idx의 값은 무의미해지고 or 1=1로 위의 쿼리가 참을 뜻하게되면서 전체를 출력하게 된다.
mysql 게시판에서 password에 위의 패스워드 쿼리를 입력하면 위와 같이 test2 게시판으로 들어가게 되는데
그 이유는 전 시간에 언급했던 것과 같다.(최상단의 행을 출력한다.)
그러면 어떻게 비밀글을 볼 수 있을까?
select * from tb_board where idx=8 and password='' or idx=8--[공백]' |
idx=8 and password='' | 참 and 거짓 = 거짓 |
(idx=8 and password='') or idx=8 | 거짓 or 참 = 참 |
idx와 password는 무의미해지고 or 연산자로 idx=8 비밀글 번호를 지정해주면 된다.