티스토리 뷰
반응형
자주는 아니지만 가끔 인젝션 포인트가 order by절인 경우가 있다.
이런식으로 asc, desc 만 정해주는 인젝션포인트가 될 수도 있고, 아니면 정렬 기준까지 정해주는 인젝션 포인트 일수도 있다. 위 예시는 해당 포인트에 mysql_real_escape_string 함수가 적용되어 기본적으로 이스케이프 필터링이 적용되어 있는 상황이다.
이 때, 정렬 했을 때 동일한 데이터가 있다면 우리가 원하는 동작을 할 수 있다.
reg_date로 정렬을 하는데 reg_date가 똑같은 데이터가 있으면 다음 정렬기준을 적용한다.
반드시!!!! 똑같은 데이터가 있어야한다!!!
우리는 바로 이 다음 정렬기준을 활용하여 원하는 쿼리문을 실행할 것이다.
일반적인 select문을 실행해 결과를 보는 형태는 안되고, 이런 경우에는 Time Based Blind SQLi를 이용한다.
select * from ch4njun order by name [ Injection Point ]
이런 인젝션 포인터일 경우.
desc, (select sleep(5) from dual where 1=1)
desc, (select sleep(5) from dual where 1=2)
위 두개의 구문을 넣었을 때 첫 번째구문의 경우 sleep(5)가 실행된다.
마지막으로 Python으로 이런 내용을 자동화시킨 코드를 첨부하면서 마치겠다.
반응형
'Web > SQL Injection' 카테고리의 다른 글
[SQL Injection] Operand should contains 1 column(s) 에러 (0) | 2019.08.09 |
---|---|
[SQL Injection] addslashes()를 썼는데도 인젝션을 당했다구요? (0) | 2019.07.19 |
[SQL Injection] Error Based Injection 3 (Feat. OracleDB) (0) | 2019.07.08 |
[SQL Injection] Error Based Injection 2 (Feat. MySQL) (0) | 2019.07.08 |
[SQL Injection] Error Based Injection 1 (Feat. MSSQL) (0) | 2019.07.08 |