wargame 48

Hacking Camp CTF 2021 write up

web, mobile만 1. World Wide Web World Wide Web 플래그 경로는 /tmp/flag 에 있습니다. https://steemit.com/kr/@huti/phpmyadmin-local-file-inclusion-cve-2018-12613 phpmyadmin Local File Inclusion 취약점(CVE-2018-12613) 재분석 — Steemit 악의적인 사용을 금합니다. 법적 책임은 본인에게 있습니다. 무단 도용/복제를 급합니다. 본 글의 저작권은 huti에게 있습니다. URL에 파일 경로를 포함하면, 사용자가 웹서버에 있는 파일을 열람 steemit.com phpMyAdmin에서 target 파라미터로 전달되는 값에 대해 유효성 검사를 하고 있으나 이를 우회하여 임의..

wargame 2021.08.18

Webhacking.kr(old) 52번

리뉴얼 전의 웹해킹 문제를 풀어본 사람이라면 리뉴얼 전 문제에서 어느정도 힌트를 찾을 수 있다. 이전 문제는 입력 벡터 하나에 파라미터로 헤더에 특정 값만 삽입하면 클리어되었기 때문에 해당 문제의 기술이 언제 쓰이는가에 대한 시나리오 적인 요소를 추가해서 리뉴얼한게 의도가 아닌가 싶다. admin 페이지와 proxy 페이지 가 존재하고 admin 페이지에서 인증 로그인을 실패했을 때 admin페이지의 소스코드 URL을 볼 수 있다. 소스코드는 아래와 같다. view-source 세션이 존재할 때와 존재하지 않을 때, 두 부분으로 나눠서 분석한다. 먼저 세션이 존재하지 않을 때에 소스 if($_SERVER['PHP_AUTH_USER']){ $id = $_SERVER['PHP_AUTH_USER']; $pw ..

Webhacking.kr(old) 4번

웹케알이 리뉴얼 되었다. 너무 옛날 버전의 취약점은 약간씩 고쳐지고 문제의도를 잘 모르겠는 문제들도 개편되었다. 4번도 이에 해당된다. 기존문제는 base64로 인코딩된 값을 풀어 나오는 sha1의 값을 rainbow 테이블로 찾아내면 되는 문제였다. sha1의 레인보우 테이블은 웹에서 지원하는 경우가 많기 때문에 쉽게 찾을 수 있었지만, 리뉴얼 되면서 의도된 바는 레인보우 테이블이 어떻게 만들어지는 지에 대한 원리를 직접 느껴보길 바라는 의도인 것으로 보인다. 바뀐 문제를 풀어보자. Password [view-source] $hash = rand(10000000,99999999)."salt_for_you"; 10000000에서 99999999 사이의 숫자를 하나 뽑아 salt_for_you와 합친다. ..

[LOS] siren

소스코드 분석 1. $db = mongodb_connect(); > DB 환경 MongoDB 2. if($result['pw'] === $_GET['pw']) solve("siren"); > 요청값과 반환 값을 엄격한 비교. pw를 알 필요가 있으므로 Blind SQL Injection 시도 문제 풀이 pw 값을 알아야 하므로 $ne를 사용하여 인증우회 할 수 없다. 이번엔 부등호인 $gt를 이용하여 pw 값을 한자리 씩 알아낸다. 다음과 같이 요청한다. ?id=admin&pw[$gt]=3 ?id=admin&pw[$gt]=1 두 번의 요청으로 pw가 1보다는 크지만 3보다는 작다는 것을 알 수 있다. pw의 첫 글자는 1이거나 2일 것이다. 이런 식으로 참과 거짓으로 패스워드 값을 유추해 나간다. 부등호..