ipwn

[pwnable.kr] cmd2 본문

Write up/Pwnable.kr

[pwnable.kr] cmd2

ipwn 2018. 1. 4. 18:31


이번 문제는 cmd2 문제이다. 


비밀번호는 cmd1의 flag이니 못 푼사람들은 풀고 오시길 바란다.


보아하니 cmd1의 문제에 필터링만 조금 더 추가되었을 것 같다.



진짜 필터링이 더 추가됐긴 한데, 너무 많이 추가된 것 같다...


일단 실행 후 환경변수 등록이 불가능하고, /, flag등등 다양한 문자들을 필터링 처리한 뒤 환경변수까지 막아버렸다.


우리가 실행시켜야 할 명령어는 간단히 /bin/cat flag이다.


bin이나 cat는 필터링이 안되어있으니 우회할 필요도 없고, flag는 와일드 카드 *나 ?를 이용해서 우회를 할 수 있지만


/를 우회하는게 관건인 문제인듯 하다. 일단 환경변수를 막았고, 실행 중 등록도 불가능하니 


환경변수로 풀 수 있는 문제는 아닌 것 같다. 그래서 우회 방법을 찾다가 echo를 알아냈다.


echo 에 -e 옵션을 주게 되면 이스케이프 문자를 사용할 수 있다는 것을 알아냈다.


그리고 echo -e "\nnn" 형태로 값을 넘겨주게 되면 8진수 ASCII코드 값으로 단일문자 출력이 가능하다.


그리고 /의 8진 아스키 코드값은 057이다.


즉 $(echo -e "\057"bin"\057"cat f*)을 프로그램 상에 넘겨주게 된다면 플래그를 읽어올 것이다.


한 번 제대로 실행이 되는지 저 값을 그대로 넣어보겠다.



이렇게 -e 옵션을 주고 넣었더니 -e 옵션이 그냥 출력된 듯 하다.. 흠.. 



-e 옵션을 빼고 payload를 넘겨주었더니 플래그가 읽어와졌다.


사실 -e옵션 빼고 입력했을 때 안되면 -e를 "로 묶어도 보고 echo말고 다른 방법인건가.. 하면서 여러가지 시도를 했을텐데, 


다행히 한 번에 됐다. 아직 -e옵션을 왜 제거해야하는지, 왜 -e옵션이 같이 출력되는지는 잘 모르곘지만 


성공적으로 flag를 읽어왔다.



'Write up > Pwnable.kr' 카테고리의 다른 글

[pwnable.kr] shellshock  (0) 2018.01.06
[pwnable.kr] mistake  (0) 2018.01.06
[pwnable.kr] cmd1  (0) 2018.01.04
[pwnable.kr] lotto  (0) 2018.01.03
[pwnable.kr] blackjack  (0) 2018.01.03
Comments