-
webhacking.kr_Wargame(4)IT/웹 해킹 2024. 3. 21. 15:22
[이 블로그는 해킹 공부하면서 가볍게 정리용으로 기록 및 내 생각을 끄적여 두기 위한 블로그(라 쓰고 일기라 읽는)이다.]
- 목차
- 문제 및 시나리오
- 과정
1. 문제 및 시나리오
입력 칸이 있고 제출 버튼이 보인다. 뭘 입력해야 하는지 모르니까 view-source를 눌러보자.
DB연결을 위한 PHP코드로 보인다. POST id의 값에 \\이 들어오면 공백으로, 싱글쿼터가 들어오면 싱글쿼터 두 개로 치환시키는 함수가 존재한다. 그리고 substr으로 문자열 0번째부터 15번째까지 값을 자르는 함수가 있다. 그리고 sql쿼리 함수에서 id값을 가져오는 쿼리문장에 "id길이가 14보다 작고 POST id값이 들어온다면 1을 가져와라"라고 되어있다. result [0]의 값이 1이 나오면 플래그가 풀리는 것 같다.
보자마자 SQL인젝션을 떠올렸지만 다른 필터링 우회 방법을 생각해봤지만 해결법은 치환함수에 있었다. 15번째까지 자른다는 소리는 15번째 글자에 싱글쿼터가 오면 치환함수로 싱글쿼터가 2개가 됐을 때 싱글쿼터 2개 중 마지막 한 개는 잘린다는 소리이다!!
2. 과정
STEP_1
PHP SandBox에서 PHP 코드를 우선 테스트 해보자. id 값에 임의로 admin을 넣고 13번째 길이까지 공백을 채우고 싱글쿼터 한 개를 넣으면? 싱글 쿼터가 2개로 나온다.
STEP_2
14개까지 공백을 채운 후 15번째에 싱글 쿼터를 넣으면? 치환된 16번째 싱글 쿼터가 잘리면서 싱글 쿼터가 한 개가 되는 모습을 볼 수 있다.
STEP_3
그대로 값을 복사하여 붙여 넣어 제출하면 플래그 획득!!
'IT > 웹 해킹' 카테고리의 다른 글
webhacking.kr_Wargame(6) (0) 2024.03.22 webhacking.kr_Wargame(5) (0) 2024.03.22 webhacking.kr_Wargame(3) (0) 2024.03.21 webhacking.kr_Wargame(2) (0) 2024.03.21 webhacking.kr_Wargame(1) (0) 2024.03.21