18번문제에 들어가면
이렇게 떠있습니다
위 sql 인젝션을 하라고 써있으니 sql 인젝션 문제갔네요
일단 view-source를 눌러 문제로 들어가봅시다.
이렇게 나와있네요 일단 해석을 해봅시다
if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack");
위를 보시면 여러가지 를 필터링하고 이것이 들어가있다면 exit하는것을 볼수있습니다
그리고 코드를 보시면 preg_match값과 일치하지 않으면 $result수행하고
id값과 비교해서 id가 guest이면 hi guest를 출력하고
id가 admin이면 hi admin를 출력하는것을 볼수있습니다.
일단 풀어봅시다.
// admin's no = 2
위에보이다시피 admin의 no는 2입니다
admin이 되려면 no가 2가 되어야하고 guest가 나오지않게해야하기 때문에 -1 or no = 2라고 입력이 되어야한다는것을 알았습니다.
1을 대입하니 hi guest가 뜨네요
우회법을 써서 한번 필터링 하는 공백을 %09로 바꿔서 입력해보겠습니다.
답은 : '0'%09or%09no='2'
여기서 잠깐 %09를 넣으니 25가 딸려온다 .... 젠장
정답을 넣을때
이렇게 %2509가 된다.
이제 입력할때
%2509에서 25를 url에서 지워주면
제출눌러주면
될것이다!!
'webhacking.kr' 카테고리의 다른 글
webhacking.kr 10번문제풀이 (2) | 2022.07.22 |
---|---|
webhacking.kr 27 (3) | 2022.07.17 |
webhacking.kr 16번문제풀이 (0) | 2022.07.16 |
webhacking.kr 26번 문제풀이 (2) | 2022.07.14 |
webhacking.kr 14번(old) (0) | 2022.07.10 |