Lord Of SQL injection, 문제 11번 골렘입니다.
기본 필터링은 무시하고 두번째 pw 필터링을 봅시다.
if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe");
or and substr( 그리고 등호(=, equal)까지 필터링하는 군요.
그럼 각각의 다른 표현을 알아볼까요
or은 || 으로 바뀌고
and 는 &&
substr 은 substring으로 작성하면되고
엥 substring이 어떻게 되냐구요? 그 이유는 preg_match에서 substr( 을 대상으로하고 있기 때문입니다.
그냥 substr이라면 substring 또한 필터링되기 때문에 substring을 쓰라고 배려해준듯합니다.
등호는 LIKE로 표시하면 되겠죠.
일단 첫번째 조건을 만족하기 위해 id=admin을 만듭니다.
pw=1234' || id LIKE 'admin
저는 이렇게 했어요.
앞의 pw에서 등호를 쓸 수 있는 것은 이건 그냥 문자가 아니라 특수한 기능을 가지고있는 특수문자이기 때문이에요.H
Hello admin 을 이렇게 출력할 수 있습니다.
하지만 두번째가 남았습니다. admin의 비밀번호를 정확히 알아야는데 방식은 7번 문제와 같습니다.
pw=1234' || id LIKE 'admin' %26%26 LENGTH(`pw`) LIKE '8
LENGTH 내에서는 Back quote를 씁니다.
위와 같은 식으로 비밀번호의 길이를 조사하고 substring을 사용해서 자동화 도구로 돌려주면 되겠죠.
'워게임 > LOS' 카테고리의 다른 글
[워게임 LOS] 문제 13번, 버그베어(Bugbear) (0) | 2016.07.27 |
---|---|
[워게임 LOS] 문제 12번, 다크나이트(Dark knight) (0) | 2016.07.26 |
[워게임 LOS] 문제 10번, 스켈레톤(Skeleton) (0) | 2016.07.26 |
[워게임 LOS] 문제 9번, 뱀파이어(Vampire) (0) | 2016.07.12 |
[워게임 LOS] 문제 8번, 트롤(Troll) (0) | 2016.07.12 |