JOIN을 해서 가입 후 LOGIN을 하는데 lv 값이 'admin'이여야 합니다.



JOIN에 대한 소스를 확인해보면 id, phone에서 다양한 필터링을 하고 있고,

insert문에 'guest'가 하드코딩 되어있어 'admin'으로 바꿔주는 과정이 필요합니다.



간단하게 test/1 로 가입을 해봤는데 lv이 'guest'로 나와있는 것을 보면 insert문에 마지막 부분은 lv칼럼인 것이 확실해 졌습니다.




처음에 id부분에 별다른 필터링이 없기에 해당 부분을 공략했습니다.

insert into c59 values('hi',1,0x61646d696e)--',1,'guest')

하지만 해당 값은 싱글쿼터가 서버에서 막혀있는지 실행되지 않았습니다.



싱글쿼터를 사용하지 않고 해결을 해야 할 것으로 보이는데 phone부분에 reverse() 함수를 이용해서 해결할 수 있습니다.

insert into c59 values('nimda',1,reverse(id))--,'guest') 이와 같이 reverse()로 필터링 되어있는 admin의 값을 넣어줄 수 있습니다.


하지만 주석이 안되는지 실패하기에 insert문의 특징을 이용해서 해결했습니다.

insert into c59 values('nimda',1,reverse(id)),(1,1,'guest') 정확히 19글자로 20자리의 필터링에 걸리지 않습니다.






[LOGIN SQL문]



LOGIN부분에 바로 INJECTION이 가능하나 확인해 봤는데 되지 않았습니다.

tset/1, test/123 을 만들어 놓고 실험해봤습니다.




phone 값을 123aa로 입력해보니 올바른 값으로 인식하고 있습니다.



그렇다면 phone값을 1a23aa로 입력해봤는데 이 값도 올바른 값이라고 인식하고 있습니다.

여기서 생각해볼 수 있는 내용은 phone 값 중 문자가 나오는 순간 그 뒤에 값들을 모두 무시한다는 것입니다.

만약 서버쪽에서 설정되어 있다면 해당 부분은 injection pointer로 사용할 수 없습니다.



id부분에는 싱글쿼터를 반드시 사용해야 하는데 해당 기능이 서버에서 막혀있으면 injection pointer로 사용할 수 없습니다.



'WarGame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob 7  (0) 2018.12.21
[webhacking.kr] prob 49  (0) 2018.12.19
[webhacking.kr] prob 3  (0) 2018.12.19
[webhacking.kr] prob 36  (0) 2018.12.19
[webhacking.kr] prob 39  (0) 2018.12.19

+ Recent posts