php
[분석일기] - php switch case
[분석일기] - php switch case
2022.09.061. Intro 얼마전 cake CTF 2022 대회가 있었는데, 일 때문에 주말에는 쉬고 싶어서 참가는 안했네요,,, 암튼 이후 writeup을 봤는데 신기해서 기록하고자 합니다. 2. switch case if else 구문이 지저분한 사람들이 switch case 구문을 좋아하더라구요. 아래처럼 switch case 구문이 있다고 가정해 봅시다. POST방식으로 `user` 정보를 받고 이를 json으로 파싱하고 있습니다. 이후 if 문으로 입력 값을 검증하고 있습니다. 최종적으로는 `user->name` 변수의 값이 admin 이어야 하지만, if문에서 admin 문자열을 필터링 하고 있습니다. 어떻게 하면 이를 bypass 할 수 있을까요? 정답은 switch case 구문에 있습니다. 공식 d..
분석 일기 - php dynamic variable
분석 일기 - php dynamic variable
2022.04.03🚪 Intro 취약점을 찾기 위해 분석하고 있는 오픈소스 웹 서비스가 있습니다. 며칠 동안 삽질을 통해 발견한 취약점(?)을 기록 및 정리하고자 합니다. 💡 Analysis 해당 취약점은 웹 관리자만 접근 가능하며, php dynamic variable 을 통해 다른 변수의 값을 overwrite 하여 Stored XSS를 동작 시킬 수 있습니다. 관리자 페이지에는 아래 사진처럼 어떤 범위를 지정해 줄 수 있습니다. 하지만, 해당 소스 코드를 분석해 본 결과, 숫자 여부를 확인하지 않고 있었습니다. 위 사진에서 100 이라는 값은 아래 사진 56번째 줄인 `$mb_id1_to` 변수에 저장되어 있습니다. 각각의 값을 `$ma_last_option` 변수에 이어 붙이는 것을 볼 수 있습니다. 최종적으로 `..
format string 을 이용한 php sprintf 버그
format string 을 이용한 php sprintf 버그
2022.02.04오랜만에 CTF에 참가하여 WEB 문제 중, php의 `sprintf()` 함수를 이용한 문제가 있었다. 아래 코드를 보면, SQL `addslashes()` 함수 때문에 SQLI 가 불가능한 것처럼 보이지만, `sprintf()` 함수에서 format string을 이용하면 이를 bypass 할 수 있다. 이를 설명하기 위해 글을 계속 읽어보자. # The John has 500 dollar. 위 코드의 서식 문자를 아래 코드처럼 인자의 순서를 지정할 수 있다. (이는 C언어에서 Format String Bug를 이용한 explit 할 때도 사용된다.) # The John has 500 dollar. 위 예제에서는 코드에 전혀 문제가 없다. 하지만 `sprintf()` 함수를 다음과 같은 사례로 2번 ..