(Lord of SQLInjection) dark_eyes 문제입니다.
코드를 살펴보면 일단 두개로 나뉘어 있으며 두번째 코드에 pw를 확인하는 if문과
echo로 Hello가 없는 것으로 보아 이전 iron_golem과 같은 error기반 문제임을 알 수 있습니다.
필터링을 살펴보면 col , if , case, when ,sleep, benchmark 가 필터링 되어있습니다.
이전 iron_golem에서 사용했던 코드에서는
https://skysquirrel.tistory.com/107
(Lord of SQLInjection) iron_golem 문제
(Lord of SQLInjection) iron golem 문제입니다. 익숙한 두개로 나눌 수 있는 코드 마지막줄 쯤에 위치한 if(($result['pw']) && ($result['pw'] == $GET_['pw'])) 코드 Blind SQL 문제입니다. 이전에도 해왔던 B..
skysquirrel.tistory.com
if(length(pw)=1,9e307*2,0)
위와 같이 if문을 사용했으나 이번에는 if 필터링으로 어떠한 에러로 True, False를 구분해야할지
감이 잡히지 않아 검색해보니
if 구문을 select 1 union select 2 방법으로 우회가 가능하다고 합니다.
어떻게 사용하는지 찾아보니 2부분에 length(pw)=value 를 넣으면 된다고 합니다.
이를 활용해 문제사이트에 값을 전달해보니
쿼리 실행에 성공했습니다.
반대로 쿼리 실행에 실패하게 되면
아무것도 없는 흰색 페이지가 출력됩니다.
이제 T 와 F를 구분할 수 있게 되었으니 위 내용을 토대로 파이썬으로 코드를 구현해보면
아래와 같이 구현이 가능합니다.
이전 iron_golem에서 사용한 코드 ascii와 substr 부분이 필터링에 걸리는 것이 없어 그대로 사용했고
코드를 실행시켜 보면 pw를 찾았습니다.
찾은 pw를 문제사이트에 전달하는 것으로 문제를 해결하였습니다.
'Wargame(Web) > Lord of SQLInjection' 카테고리의 다른 글
(Lord of SQLInjection) evil_wizard 문제 (0) | 2022.10.09 |
---|---|
(Lord of SQLInjection) hell_fire 문제 (0) | 2022.10.09 |
(Lord of SQLInjection) iron_golem 문제 (2) | 2022.09.27 |
(Lord of SQLInjection) dragon 문제 (0) | 2022.09.25 |
(Lord of SQLInjection) xavis 문제 (0) | 2022.09.21 |