-
|Lord of SQL_injection| #11 GolemWargame Site/SQL injection 2019. 2. 11. 17:05
주말에 다녀온 제주도 '오드레' 카페가 또 가고 싶은 느낌이다.
드디어, 세 번째 줄로 들어섰다 !!
화이팅합시다아!!
11단계 문제 golem 이다.
or 랑 and, substr, = 를 막고 있는 것, 그리고 admin 의 pw 를 알야내야 하는 것 앞서 풀었던 7단계 문제인 orge 에서 substr 과 등호를 사용하지 못한다는 점만 빼고는 일치하는 Blind Injection 문제이다.
등호의 사용이 불가피 할 경우에는 'like' 를 사용하면 된다.
[ 기준 ] like [ 비교대상 ]
like 와 함께 다라오는 개념인 % 와 _ 의 개념을 짚고 넘어가야겠다.
% 은 0 개 이상의 모든 글자를 대체해준다.
_ 은 1 개의 모든 글자를 대체해준다.
'admin' like 'a%' > True
'admin' like 'd%' > False ( d 는 중간에 들어가므로 dmin 까지는 대체가 되지만, 앞의 a는 대체되지않는다. )
'admin' like '%m%' > True
'admin' like 'admin%' > True
'admin' like '_min' > False ( _ 가 한 개이기 때문에 dmin 까지만 대체될 수 있다. )
'admin' like '_d_in' > True
'admin' like '_____' > True
'admin' like 'admin_' > False ( 꼭 1개 이상의 문자를 대체한다. )
따라서 id = 'admin' 이라는 문구를 id like 'admin' 이라고 수정해주면 해결되는 부분이다.
또한 3 like 3 처럼 활용할 수 있다.
물론 3 like '%3' 처럼 활용도 가능하다.
or 보다 and 의 우선순위가 높다는 것을 감안했을 때, 우리가 필요한 admin 의 값에 대해서만 접근을 해보자
?pw='||id like 'admin 을 넘겨주면
select id from prob_golem where id='guest' and pw='' || id like 'admin' 이 된다.
id 가 guest 이고 pw 가 '' 인 경우 또는 id 가 admin 인 경우를 얻어오는 select 문이 된다.
즉 앞부분의 경우 False 가 되고 or 로 연결되어 있기 때문에 쿼리문은 id like 'admin' 에 집중이 된다.
admin 계정의 유무를 알 수 있는 코드가 되는 것이다.
물론 문제에 admin 일 경우를 명시해놓았지만, 확인작업을 하는 것은 중요하다고 생각합니다!!
id like 'admin' 을 연장하여 조건문 자체를 True, False 로 다룰 수 있는 환경을 만들어주자.
위의 '1' 자리가 True 라면 다음과 같이 Hello admin 이 출력이 될 것이고,
False 라면 아무 문구도 출력되지 않을 것이다.
7번 문제 orge 의 코드에서 length(pw) = {} 부분을 like 로 수정하였고,
substr 의 사용이 필터로 인해 불가하기 때문에 mid 라는 함수를 활용해서 동일한 방법으로 해결했다.
※ substr 와 mid 의 사용법은 동일하다.
짜잔!!
orge 도 클리어!!
Blind Injection 문제는 뭔가 진짜로 해킹하는 느낌이 들어서 재밌는 것 같다.
세번째 줄이여서 그런지 난이도가 점점 올라간다.
화이팅 ~ 열공합시다아
'Wargame Site > SQL injection' 카테고리의 다른 글
|Lord of SQL_injection| #13 Bugbear (0) 2019.02.13 |Lord of SQL_injection| #12 Darkknight (0) 2019.02.13 |Lord of SQL_injection| #10 Skeleton (0) 2019.02.09 |Lord of SQL_injection| #9 Vampire (0) 2019.02.09 |Lord of SQL_injection| #8 Troll (0) 2019.02.09 댓글