-
[Lord of SQL_injection] #22 dark_eyes$ 웹 해킹 $/los.rubiya.kr 2019. 5. 28. 12:53
해당 문제를 보면 저번 21번 문제와 거의 비슷하지만 필터링이 더 들어가 있는 것을 확인해 볼 수 있습니다.
21번 문제에서는 if문을 이용한 error based sql injection을 했지만 이번에는 if 와 case가 필터링 되어 있기 때문에 다른 방법을 찾아 보겠습니다.
우회 방법을 찾던중 출력하는 필드 수의 차이를 이용한 방법을 찾게 되었습니다.
select 1 union select [조건] 의 형태의 우회 방법인데 이렇게 조건을 걸었을 때 조건이 참이라면 1을 반환해서 1개의 필드가 되고, 조건이 거짓이라면 0을 반환하게 되어서 2개의 필드로 인식을 하게 되는 것입니다.
저는 조건이 거짓일 때 에러를 띄우기 위해서 select 1 union select [거짓 조건] 의 형식으로 접근을 해 보겠습니다.
그러면 한번 페이로드를 작성해 보겠습니다.
?pw=’ or id=’admin’ and (select 1 union select length(pw)=[pw의길이])# 을 입력하면 되는데 참과 거짓일 때 어떻게 출력이 되는지 확인해 보겠습니다.
먼저 거짓일 때의 출력입니다.
아무것도 뜨지 않습니다.
이번에는 참일 때 출력 결과를 확인해 보겠습니다.
pw의 길이가 8일 때 참의 결과를 보여주는 것을 확인 할 수 있습니다.
이제 python 코드를 작성해야 하는데 참일 때 query 문자열을 보여주기 때문에 저것으로 확인 해 보겠습니다.
'$ 웹 해킹 $ > los.rubiya.kr' 카테고리의 다른 글
[Lord of SQL_injection] #24 evil_wizard (0) 2019.05.28 [Lord of SQL_injection] #23 hell_fire (0) 2019.05.28 [Lord of SQL_injection] #21 iron_golem (0) 2019.04.06 [Lord of SQL_injection] #20 dragon (0) 2019.04.06 [Lord of SQL_injection] #19 xavis (4) 2019.04.06