이번 강의에서는 서버 사이드에서 발생하는 취약점 중 SQL Injection에 대한 심화적인 공격 방법에 대해 다룹니다.
Description
Objectives
다양한 SQL Injection의 공격 방법들을 익힐 수 있습니다.
Questions related to this course.
8 questions
Comment Execute 강의에 대하여 추가 질문이 있습니다.
Comment Execute에서 "select 1 /*!union*/ select 2"라는 쿼리문을 실행하게 된다면 정상적으로 쿼리가 실행되는 것을 확인하였는데 여기서 "/*!union*/" 주석 처리 부분에서 "!"를 앞에 붙이게 되면 DBMS의 예약어를 실행할 수 있는 것을 의미하나요? "/*!예약어*/"를 사용하게 되면 DBMS에서 어떻게 처리가 되는 것인가요?
SQL Injection 공격 기법 내용 중 질문이있습니다
union select substr(upw,1,1) from users where uid='admin'--" 이것은 쿼리문을 통과 하던데
--"이 부분이 무슨 역할을 하는지 모르겠습니다. "을 무시하는 문법이 있는지..
Error Based 와 Error Based Blind 에 관하여..
Error based는 에러 발생 부분에 원하는 출력 값을 입력하여 injection이 진행되는데 error based blind는 에러 발생 유무를 판단하고 난 후 injection이 어떻게 진행 되는 건가요?
SQL Injection 실습 2 , 목표1
Select upw from users where uid='admin' and pw='' 이 상태에서 뒤에 union 을 활용해 패스워드를 하나씩 알아가는 것이 문제인데 union upw ... 이렇게 바로 비밀번호를 구할 수도 있는 것 아닌가요? 왜 굳이 하나씩 알아가는 거죠?
Querry Error 질문 있습니다!
SQL Injection 4번 예제 첫 번째에서 아래와 같이 쿼리를 작성했는데 Query Error가 return 되네요..
```
id : 123
pw : 321" union (select upw as uid from users where uid='admin' and left(upw, 1)="a");-- "
최종 쿼리 : select uid from users where uid="123" and upw="321" union (select upw as uid from users where uid='admin' and left(upw, 1)="a");-- "
```
따로 Ubuntu + MariaDB VM을 만들어서 위와 같은 형식으로 테스트 했을 때는 결과가 정상적으로 return 되는데 이 문제에서는 error가 뜨네요.. 사용하는 DBMS가 달라서 그런걸까요?..
* * *
**추가**
두 번째꺼에서도 안되길래 혹시나 싶어서 union 뒤에 감싸고 있는 괄호를 지웠더니 정상 작동하는데 VM 환경이랑 다른 이유가 있나요?..
**추가2**
첫 번째꺼는 괄호 지워도 똑같이 안되네요 ㅜ
서브 쿼리와 주석의 조합에 대한 질문
SQL DML 구문에 대한 이해에서 실습 3에서 제가 이해한 바로는 서브 쿼리를 이용해서
admin 테이블에 있는 값을 가져오는 것인데
",(select upw from admin))# 이렇게 하면 답이 나오던데 마지막에 #을 넣으면 뒷부분이 주석처리 되서
쿼리 자체가 완성하지 못해 에러가 발생해야 하는것 아닌가요?
insert into board (name, text) values ("",(select upw from admin))--", "asd");
예시에서 이렇게 되있는데 이것은
insert into board (name, text) values ("",(select upw from admin))-- ~~", "asd");~~
이렇게 주석 처리가 되서 불완성된 insert 쿼리 자체가 에러를 발생시켜야 하는것 아닌가요?
or 구문으로 참이나오게해서 pw 취득
or 구문으로 참이나오게 해서 uid의 pw를 알아내는건 알겠는데 pw가 뭔지 모르겠네요,,,
어디다 집어넣어야 하죠?
sql에서 or '의 의미...
`uid='admin' or '' and upw=''`
의 의미가 upw=''과 ''의 and연산 후 uid='admin'과 or연산을 한 결과 uid='admin'이 존재하므로 참이 되어 값이 나오는건가요??
Recommend for you
Related courses

Server-side Advanced - SQL Injection

Free
Detail
2 hours read
Hard
Server-side Basic