목록전체 글 (162)
Oh! JUN
rownum 행에 일렬번호를 붙여준다. rownum < 3 이하인 행만 검색 하니까 1,2 검색된다. ※ 주의 select rownum, username from all_users where rownum = 3; 쿼리를 입력하면 rownum값이 3인 행만 검색되지 않을까? - 검색되지 않는다. 쿼리문의 실행순서는 (1) from all_users (2) where rownum
limit(index, size) index: 레코드 시작 size: 레코드 시작부터의 개수 count()함수로 레코드의 개수를 알 수 있다.
★데이터 조회 공격 상세 프로세스 이번 시간에는 환경 분석 실습을 해볼 것이다. DBMS 파악 웹에서 사용하고 있는 DBMS(mysql, mssql, oracle, ...)을 파악해야 적절한 인젝션 공격을 할 수 있다. DBMS를 파악하는 방법은 위의 방법들이 있는데 실무자에 의하면 연결 연산자를 가장 많이 사용한다고 한다. ex) ★http://127.0.0.1/board/mysql/view.php?idx=11 and 'test'='te' 'st' mysql 연결 연산자 http://127.0.0.1/board/mysql/view.php?idx=11 and mid('test',1,1)='t' mysql 함수 http://127.0.0.1/board/mysql/view.php?idx=11 and leng..
접근 권한이 없는 타 사용자의 글을 수정할때는 패스워드를 입력해서 할 수도 있는데 상황이 두가지가 있다. 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 p..
비밀글을 인젝션을 통해 확인해 볼 것이다. 비밀글을 클릭하면 패스워드를 입력해야 되는데 여기에 인젝션을 적용해 볼 것이다. 쿼리를 예상해보면 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로 위의 쿼리가 참을 뜻하게되면서..
※ 실습하기 전 로그인 사이트 제작 //login.php 로그인 페이지 ID : PW : //logout.php //index.php 회원 전용 페이지 입니다. 님 반갑습니다. //loginAction.php
검색 기능의 입력 파라미터뿐만 아니라 컬럼을 구분을 구분해주는 파라미터에서도 취약점을 찾을 수 있다. search_type=all&keyword=test을 쿼리문으로 보면 select * from board where all like '%test%' 구조로 예측을 할 수 있다. search_type=1=1+and+title&keyword=test 을 쿼리문으로 바꾸면 select * from board where 1=1 and title like '%test%' 1=1은 참 title like '%test%' title에 test가 있으니까 참 전체 쿼리문은 참 그래서 이미지 오른쪽 Response에 test문이 검색된걸 확인할 수 있다. search_type=1=2+and+title&keyword=te..
검색 기능의 일반적인 구문 select * from board where title like '%_________%' 검색 기능은 문자에서 검색 하고자 하는 내용을 담고 있어야 하니까 '%_____%' select * from board where title like '%' and '%'='%' title like '%' : 참 '%'='%' : 참 고로 title like '%' and '%'='%' : 참 * %는 와일드 문자로 0개 이상의 문자를 포함하고 있다. like랑 같이 쓰여야 와일드 문자의 기능을 한다. 그래서 test like '%'는 모든 내용을 검색하는거고 and '%' = '%'는 like 구문이 아니어서 %는 단순 문자로 쓰이게된다. 모든 내용이 검색된걸 확인할 수 있다. sele..