해당문제도 간단하다. 이번 문제에서 요구하는 바는 PHP 의 str_replace 취약점을 알고있냐에 대해 물어보는 문제이다.
소스코드분석은 아래와같다. 이전문제와동일하게 싱글쿼터 ( ' ) 를 필터링하고있다.
이어서 GET 방식으로 받은 id 파라미터의 값을 strtolower 로 치환한다음, 그 치환한값에서 admin 이라는 문자열을 공백문자인 "" 로 바꾸고있다. 그리고 필터링되고 치환된 id 파라미터의 값을 where 절에 넣고 이를 기반으로 쿼리문이 수행된다.
마지막으로 result 변수에 쿼리문의 결과가 저장되는데, 여기서 id 컬럼이 admin 이면 문제가 통과된다.
우선 문제풀이를 위해서는 두가지를 해결해야한다.
1. id 컬럼의 값이 admin 이 나오도록 해결해야한다.
2. str_replace 를 우회해야한다.
이번문제는 2번을 해결하면 자연스레 1번또한 해결된다.
2 번의 해결방법은 아래와같다. str_replace 는 발견되는 문자열을 단한번만 바꿔준다는 취약점이 존재한다. 즉,
admin 말고 adadminmin 을 id 파라미터 값으로 넣으면 결과적으로 where id 에 admin 이 들어온다.
따라서, 1번과정 또한 동시에 해결된다.
'WebHacking > Lord of SQLInjection' 카테고리의 다른 글
golem (0) | 2022.11.17 |
---|---|
skeleton (1) | 2022.11.17 |
troll (0) | 2022.11.17 |
orge (0) | 2022.11.15 |
darkelf (0) | 2022.11.15 |