webhacking.kr 61

Sirius·2023년 3월 24일


문제에 접속하면 바로 이런 화면이 뜬다.
소스를 살펴보자

1. 방어하는 함수들

1. addslashes

현재 id입력값에 ' 혹은 " 가 들어오면 앞에\를 붙여서 \'이렇게 만든다.
즉 sql인젝션을 방지한다.

2. preg_match

  1. (
  2. )
  3. select
  4. from
  5. ,
  6. by
  7. .
    이 7까지는 있으면 바로 exit된다.

3. len

또한 id의 길이가 15를 넘기면 exit된다.

2. SQL 인젝션공격

1. MySQL의 별칭(alias) 기능 사용

값에 별칭을 주어 접근을 별칭형태로 할 수 있게됨
즉 "admin"에 "id"라는 별칭을 부여한다.

2. addslashes 우회(HEX 변경)

그러나 "admin"을 입력하면 앞에 \가 붙는다.
이것을 어떻게 우회할 수 있을까?
그것은 "admin"을 hex로 바꾸어 주는 것이다.

놀랍게도 mysql은 admin의 hex값과 "admin"을 같다고 인지한다.

3. len길이 고려

as를 생략해도 동작한다.

4. 해결

0개의 댓글