file=../uploads/flag.php
위를 입력하면 되는데 flag가 필터링된다
정규식 공부를 해보자
일단 여기에서 쓰인 건 /flag|:/i인데
flag|:는 flag와 : 중에서 하나를 찾는다는 의미이다.
i는 대소문자 구분하지 않고 검색한다는 뜻이다
flag, FLAG, Flag 모두 포함
그렇다면 스트링 우회 기법을 써보자
https://dolcevie.com/js/converter.html
Hex/Ascii Converter
Hex: 41:6e:74:6f:6e:20:69:73:20:67:72:65:61:74:20:3a:29
dolcevie.com
char(0x666c6167)
0x666c6167
%66lag.php
i 옵션 우회는 모르겠고 m 옵션은 개행 대신 ; 써주면 된다고 한다 공백은 $IFS
이 필터링 우회는 view 페이지가 아닌 ?page로 값을 넘겨줘야 한다.
?page=/var/www/uploads/flag.php
가 안되길래 마지막 확장자 제거 Can you see $flag?라고 뜸
LFI 취약점에 대해 더 공부해야 한다.
서버 측 script 언어에서 발생하는 취약점 -> 애플리케이션의 입력 검증 부족
php에서는 include 사용하면 input에 대한 필터링 존재하지 않아서 발생
php wrapper를 활용해서 공격할 수 있다고 함
file:// — Accessing local filesystem
http:// — Accessing HTTP(s) URLs
ftp:// — Accessing FTP(s) URLs
php:// — Accessing various I/O streams
zlib:// — Compression Streams
data:// — Data (RFC 2397)
glob:// — Find pathnames matching pattern
phar:// — PHP Archive
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — Audio streams
expect:// — Process Interaction Streams
expect, php://filter/, zip://을 주로 쓴다
1. expect://
system command 실행시킴
2. php://filter/
www.[웹사이트주소]/?file=php://filter/convert.base64-encode/resource=
위를 입력하면 인코딩 파일 얻을 수 있음
3. zip://
zip 파일 압출을 풀고 파일 안 코드 실행시킴
www.[우리가 공격할 웹 사이트의 주소].index.php?page=php://filter/convert.base64-encode/resource=/etc/passwd
이렇게 쓸 수 있다고 함
?page=php://filter/convert.base64-encode/resource= /var/www/uploads/flag.php
https://gchq.github.io/CyberChef/

'wargame > dreamhack' 카테고리의 다른 글
| simple_sqli (0) | 2025.04.28 |
|---|---|
| devtools-sources (0) | 2025.04.25 |
| Textbook-DSA2 (0) | 2025.04.23 |
| simple-ssti (0) | 2025.04.22 |
| safeprime (0) | 2025.04.22 |
