[Solved in under 55 minutes]
OS Command Injection 문제 풀고 싶어서 이리저리 뒤적뒤적 하다가 발견
바로 해보자

뭔 문제인지는 잘 모르겠지만
확실한건 Injection 문제인것 같다.
바로 코드보자

<?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>
system(~) 적힌걸 보면 바로 OS Command Injection이구나 오못타~
일단 해보자.

ls가 문자열로 취급돼서 그대로 출력됐다.
코드를 다시 보자
system("echo 'hello! {$id}'");
echo 'hello! {$id}' 이므로 문자열로 취급돼서 그대로 출력되었다.
즉, 싱글쿼터로 닫아주고 echo 'hello! ';ls'' 이런형식으로 해주면

';ls'
귀신같이 flag~ 뭐시기가 보인다.
일단 값은 제대로 들어갔기 때문에 다음은 flag를 볼 수 있게
cat을 이용해서 보면 쉽게 풀 수 있지만
$id = substr($id,0,5);
인덱스 길이 5개 까지만 입력받는 필터링이 걸려있으니 저거를 우회해보자!
생각했지만 별지랄 다 해도 안된다.
생각해보니 서버측에서 5글자로 정해놓으면 클라이언트에서 아무리 날고 기어봐야 안된다. 이렇게 성장한다고 생각합니다 허허ㅋㅋㅋㅋㅋ
다시 코드를 봤다.
You just need to execute ls
거업나게 생각했는데 "너 ls만 할 줄 알면 돼." 이게 마음에 걸렸다.

다시돌아와서 계속 보다가 어? 설마? index.php인데 저것도 접속 할 수 있지 않을까? 라는 생각이 정말 0.01초 스치더니 바로 URL에 index.php를 지우고 삽입 해보았다.
들어가면~?

와우~ 귀신같이 FLAG{~} 값이 나왔다.
뭔가 URL 형식이라 복사해서 주소창에 넣어주면~?

.
.
.
아니 이게 뭔데?
영상에 답이 있나 싶어서 끝까지 다봤는데 뭐 관련된게 없었다.
댓글도 봤는데 관련된게 없어 뭔가 잘 못 됐다 생각해 돌아와 webhacking.kr에서 뒤지다고 나왔다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 답 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
FLAG{y2u.be/sW3RT0tF020}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
AUTH를 접속하면 저렇게 FLAG가 나오는데 삽입하면 잘 된다!
5글자 제한하는것을 우회(?) 말하기도 부끄럽네 그런 되도않는 맨땅에 헤딩 + 유튜브 링크 접속 후 solve 방법 찾기 때문에 시간이 조금 걸렸던 것 같다 허허
FLAG{}가 나오는 문제는 처음 풀어보다 보니 ㅎㅎ.. 다음에는 괜찮다. 호되게 당했으니.
나는 XSS를 가장 좋아하지만 Injection류도 좋아질려고 할지도..?
Webhacking.kr Old-44 Write-up
이상 보고 끝!