에 들어가보면 php코드를 제공하는 페이지를 볼 수 있다.
일단 a를 넣고 제출하니 "ctf.j0n9hyun.xyz:2030/?guess=a#"라는 url과 함께 "비밀 코드는 a (이)가 아닙니다."라는 문장이 출력된다.
그래서 어디에 취약점이 있나 검색해보는 과정에서 extract 취약점을 알게되었다
일단 extract()함수는 배열속의 키값을 변수로 만들어주는 역할을 한다.
예를 들어
$_GET[a]="Hello";
$_GET[b]="World";
extract($_GET);
echo $a;
echo $b;
이렇게 하면 Hello World가 출력되는것이다.
$a="test";
extract($_GET);
echo $a
이런 소스가 있을때 ?a=asdf라고 값을 주면 a의 값이 변하여서 test가 출력되어야하는데 asdf가 출력되는 취약점이 존재한다.
그러므로 filename도 존재하지 않고 guess도 존재하지 않으면 filename===guess가 참이 된다.
ctf.j0n9hyun.xyz:2030/?filename=&guess=
이렇게 하면 flag를 얻을 수 있다.
'Hacking > HackCTF' 카테고리의 다른 글
Hackctf [Web]Login (0) | 2020.12.21 |
---|---|
Hackctf [Web]Read File (0) | 2020.12.21 |
Hackctf [Web]보물 (0) | 2020.12.21 |
Hackctf [Web]Button (0) | 2020.12.21 |
Hackctf [Web]Hidden (0) | 2020.12.21 |