티스토리 뷰
id='admin'의 pw를 찾는 문제이다. 지금까지는 조건식이 맞으면 "Hello admin!" 이 출력되는 것을 이용할 수 있었지만, 이번에는 에러 메시지가 출력되는 입력을 이용한다.
select 1 union select 2 가 subquery로 사용될 경우 Subquery returns more than 1 row 라는 에러가 출력된다.
if(조건, 참, 거짓) 을 이용하면 된다.
if(length(pw)>pw길이,(select 1 union select 2),1) 를 이용하게 되는데, pw길이를 1에서 부터 증가시켜 입력한다면, 게속 에러가 출력되다가 pw길이가 실제 pw의 길이와 같아질 때 에러가 출력되지 않게된다.
?pw='or id ='admin' and if(length(pw)>16,(select 1 union select 2),1) %23
위와 같이 pw길이를 16으로 하였을때, 에러가 출력되지 않았다. 즉 'admin'의 pw길이는 16이라는 것을 알 수 있다.
pw 길이가 16이라는 것과, pw길이를 구했던 것과 비슷한 방식으로
if(ord(substr(pw,1,1))>p1 ,(select 1 union select 2),1) 를 이용해서 파이썬 프로그램을 작성하였다.
p1을 낮은 값 부터 1씩 증가시키면 참 부분이 실행되서 에러가 출력되다가, p1의 값이 실제 pw의 1의 자리가 될때, 거짓 부분이 실행되며 에러가 출력되지 않는 것을 이용해서 작성했다.
위 사진에서 보면 1~4 자리는 !이고, 나머지 5~16자리는 스페이스바(공백) 이다.
pw는 결국 4자리라고 보면 된다.
?pw=!!!!
를 입력하면 클리어
'hacking > LOS' 카테고리의 다른 글
<LOS> - 22번(dark_eyes) (0) | 2018.05.03 |
---|---|
<LOS> - 20번(dragon) (0) | 2018.05.03 |
<LOS> - 19번(xavis) (0) | 2018.05.02 |
<LOS> - 18번(nightmare) (0) | 2018.04.29 |
<LOS> - 17번(succubus) (0) | 2018.04.29 |