- 메인화면

메인화면 상으론 알수있는 정보가 많지 않아보인다 view-source를 통해서 소스코드를 까보자
- 소스코드

GET방식을 통해서 lv 값을 받아 SQL 필터링(select, or, and, (, ) 등)을 거친후에 DB에 접근해 SQL쿼리
"select id from chall49 where lv={$_GET['lv']}"를 동작시켜 결과값이 admin이면 solve 함수를 동작시킨다
- 풀이과정
일단 주어진 홈페이지에 아무값이나 입력해서 결과를 봐보자
# 2 입력

소스코드 해석부분에서 확인했듯이 2가 GET 방식으로 전달되어 해당하는 값인 udnrg가 출력되었다
즉, id 2 = udnrg 라는 뜻 우리가 필요한 값은 id ? = admin 이다
이 값을 때려맞추긴 쉽지않으니 논리연산을 통해 id='admin' 을 찾는방법을 찾아보자
이를 위해서 필터링 부분을 자세히 살펴보자
# 필터링 구문 분석

필터링 되는 부분을 살펴보면 or, and 등 논리연산에 필요한 구문이 필터링 되는것을 볼 수 있다
하지만 우린 or, and 말고도 논리연산을 할 수 있다 방법은 ||, && 를 사용하는 것 이다
이를 사용해서 페이로드를 작성해보자면
123||id='admin' 이 될 것이다 이를 입력해보자
# 123||id='admin' 입력

어라? 필터링 구문에 걸렸다
입력한 페이로드중 어떤부분에서 필터링 된것인지 확인해 보면 ' 이게 필터링 구문에 포함되어있었다
그럼 admin을 ' 나 " 없이 입력해야한다 admin을 16진수로 바꿔서 입력해보자
admin == 0x61646d696e
즉, 입력해야하는 페이로드는 123||id=0x61646d696e 가 된다
# 123||id=0x61646d696e 입력

-완-
'CTF > webhacking.kr' 카테고리의 다른 글
| challenge 46 (0) | 2025.09.16 |
|---|---|
| challenge 51 (0) | 2025.09.15 |
| Challenge 7 (0) | 2025.09.10 |