view-source를 해봤다.
<?php
if($_GET['view_source']){ highlight_file(__FILE__); exit; }
?><html>
<head>
<title>Challenge 44</title>
</head>
<body>
<?php
if($_POST['id']){
$id = $_POST['id'];
$id = substr($id,0,5);
system("echo 'hello! {$id}'"); // You just need to execute ls
}
?>
<center>
<form method=post action=index.php name=htmlfrm>
name : <input name=id type=text maxlength=5><input type=submit value='submit'>
</form>
<a href=./?view_source=1>view-source</a>
</center>
</body>
</html>
hello {$id}.. 그리고 ls를 실행하라고 한다.
id는 길이가 5까지만.. input할 수 있나봄.
if($_GET['view_source']){ highlight_file(__FILE__); exit; }
view_source하면 highlight_file(__FILE__) 하고 exit;
name:에 secum을 입력했더니 (문자 5개까지만 입력) hello! secum이라고 한다.
음 그러면 이 id를 입력하는거 뒤에 또 다른 명령어를 입력하면 될거 같은데
이런식으로?
근데 이렇게하면 그냥 hello ; ls라고 한다.
아 여기서 간과한게 있다!!
system("echo 'hello! {$id}'");
이걸 잘 보면 방금처럼 ; ls 라고 입력하게 되면 그냥 이걸 {$id} 안에 있는 문자로 인식하기 때문에
;에다 작은 따옴표를 씌워줘야한다.
"echo 'hello!';'ls'"
그럼 hello!까지만 echo를 하고, 그 다음에 ;로 명령어 구분을 해준 뒤, 그 다음 ls 명령어까지 실행할 수 있음!
또 난독화가 되어있는거 같은데 base64는 아닌거 같고.. 음
근데 뒤에 index.php가 있는걸 보면 이게 document 위치인가..?
flag_ ~ 이 값 전체를 index.php는 삭제해주고 입력했는데
flag 값이 나왔다.
굳!
'CTF, 워게임 문제 풀이 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 46번 문제 (0) | 2022.12.14 |
---|---|
webhacking.kr 45번 문제 (0) | 2022.12.13 |
webhacking.kr 43번 문제 (0) | 2022.12.10 |
webhacking.kr 42번 문제 (0) | 2022.11.26 |
webhacking.kr 41번 문제 (0) | 2022.10.15 |
댓글