본문 바로가기

Webhacking

[LOS] Level 6 darkelf 문제풀이

[힌트]

1. 주석처리

    # : %23, ' : %27

2. or and 우회

    or : ||

    and : &&

 

if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 

첫번 째 필터링 것들은, prob, _, ., (, ), 대소문자를 구분하지 않음, 필터링 하는 문자열을 사용 시 No Hack을 출력한다.
if(
preg_match('/or|and/i'$_GET[pw])) exit("HeHe"); 

두번 째 필터링하는 것들은 and 와 or를 필터링하고 있다.

이를 대체하기 위해서는 &&와 ||를 사용할 수 있다.

 

 if($result['id'] == 'admin'solve("darkelf");

id값으로 admin이 들어오면 문제가 풀리는 것을 볼 수 있다.

위의 사진을 보면 id값이 geust로 고정되어 있는 것을 볼 수 있다

id를 admin으로 만들기 위해서는 or를 사용해서 하는데, or를 필터링하고 있으므로 ||을 사용해야 한다.

 

id='guest' and 부분을 거짓으로 만들기위해서 pw='||id='admin을 입력했다

입력한 query를 해석해보자면, id가 guest이고, pw가 없을 때(거짓) 또는 id가 admin이다.(참)

결과적으로는 논리합때문에 참이되어버리고, 문제가 해결되게 된다.

 

'Webhacking' 카테고리의 다른 글

[LOS] Level 5 wolfman 문제풀이  (0) 2019.05.31
[LOS] Level 4 Orc 문제풀이  (0) 2019.05.31
[LOS] Level 3 goblin 문제풀이  (0) 2019.05.24
[LOS] Level 2 Cobolt 문제풀이  (0) 2019.05.24
[LOS]Level1 gremlin 문제풀이  (0) 2019.05.24