ls, dir 막혔을때 파일 리스팅

레드벨벳 슬기 CTF나 워게임 Command Injection류의 문제들에서 ls, dir 로 file listing이 필요한 경우가 있는데 보통 ls와 dir은 대표적인 명령어이기 때문에 막혀있는 경우가 많을 것이다. 그의 예시로 다음과 같은 코드가 있다고 가정해보자. 우회하라고하면 쉽게 우회할 수 있겠으나, 일단 이 문제의 핵심은 ls, dir 을 통해 directory listing이 되지 않는다는 것이다. 이럴 경우 vi 를 이용해도 우회할 수 있다. `vi . `를 하면 다음과 같은 화면을 볼 수 있다. 해당 디렉터리 안에는 index.php 라는 파일과 test 라는 디렉터리 하나가 있는데 vi . 명령을 통해 잘 나타났다. 다양하게 응용가능

command injection 공백 우회

에이프릴 이나은 예전에 디미CTF에서 curl을 통한 SSRF를 가장한 command injection 문제가 나온 적이 있다. 여기에서 $IFS를 통해서 옵션을 취할 수 있다는 것을 알아냈는데, $IFS를 이용해서 인자들도 조작할 수 있기에 정리해본다. 이런 식으로 공백을 우회할 수 있다. 하지만 echo$IFS1; 이렇게 하면 bash 상에서는 IFS1 이라는 이름의 환경변수를 불러오라는 뜻이 되기 때문에 인자로 1을 전달하지 못한다. 만약에 IFS1 이라는 환경변수에 IFS와 동일한 것이 저장되어 있다면 물론 IFS와 같은 역할을 할 것이지만ㅋㅋ echo$IFS$()1; 을 이용하면 $IFS와 1이 $()에 의해 구분되기 때문에 echo 1이 실행될 수 있다. 원평이형 문제를 풀다가 알게 되었는데 ..

CTF Python Jail tips - 3

해당 글은 지난번에 작성한 CTF Python Jail의 advanced한 글이다. Python module 파이썬에는 모듈이라는 개념이 있다. import 로 가져오는 것이 바로 모듈이며, 이 모듈은 C++에서의 namespace와 약간 비슷한 개념이다. (제가 C++를 많이 배운 편이 아니라, 만약 아니라면 댓글로 지적 부탁드립니다.) 만약 모듈을 import 했다면, 우리는 모듈 내의 변수, 함수 등의 자원들을 사용할 수 있다. dir() 함수로 확인 가능하다. 모듈 안에 있는 자원은 . (dot) 을 통해서 접근 가능하다. 파이썬 Jail Break 문제에서 system이 막혔을 때, system 함수를 사용하지 못할 것이다. os.system이 막혔으니까. (물론, system command를 ..

CTF Python Jail tips 2

이 글은 해당 글의 확장판의 형식으로 작성된 글이다. 파이썬은 import와 관련된 함수나 모듈이 생각보다 많다. 위에 적혀있는 __import__가 대표적으로 알고 있는 import 관련 함수이다. importlibimportlib 이라는 모듈은 python.org에서 설명하기론, __import__() 함수의 연장선이라고 한다. 그래서 import 와 관련된 함수들이 많다. importlib.import_module() built-in function의 __import__ 함수와 사실상 같은 역할을 하는 함수이다. 하지만, import 키워드를 막은 경우가 많아서 못 쓸 것 같긴 하다. importlib.sys sys 모듈과 동일하다!! sys 모듈의 modules 라는 dict 형의 변수를 이용하면..

CTF Python Jail Tips

이번에 코드게이트에서도 Python Jail 문제가 나왔다시피, 많은 CTF에서 Jail 문제가 나온다. 요즘들어서 부쩍 Python Jail 문제에 관심이 많아져서 이 글에 정리해보려고 한다. dir()dir 함수는 안에 있는 값이 object라면 그 모듈의 attributes 들을 반환하고, class라면 안에 정의된 함수와, 변수들을 반환한다. Python Jail 의 기본은 해당 함수를 이용해서 어떤 속성을 갖고 있는지 확인하는 것이다. __import__ 이것은 Python의 Builtin Function이다. 원래의 import 구문과 역할은 똑같으나, 한 명령에서만 import 하겠다는 뜻이다. 정확히 무슨 뜻인지 모르겠으면 아래의 코드를 확인하자. 아래는 2017년 사이버가디언즈 챌린지 예..

System overall

HTTP or HTTPS Req.| VWeb Server DB Server(3306) : 둘이 서로 소켓 통신을 함 이것이 TCP일 수도, UDP일 수도 있음. TCP는 통신 프로토콜, IP 기반으로 통신.모든 네트워크 통신은 소켓 통신이다. 네트워크 소켓 통신 프로그램이라고 하면, 이더넷 혹은 TCP/IP를 이용한 프로그램 MySQL 프로토콜을 이용해서 3306 포트로 Localhost 내에서 통신이 이루어짐.IPC 기반으로 통신이 이루어지기도 하지만, 소켓 기반으로도 통신이 이루어지기도 함. 웹 서버는 뭘 지칭하냐면, 클라이언트 통신 관련 라이브러리같은 거임. 3306 포트가 외부에 오픈되면 될까? 이런 것을 막기 위해서 firewall에서 3306을 drop하라고 설정해둠. 127.0.0.1:330..

Android URL Spoofing cheat sheet

http://182.176.65.7/%EF%B9%B0/http://google.com/test. Redirecting... To continue, tap and hold here, then choose "Open in a new tab" 안됨. 그냥 클릭누르면 아무 것도 하지 않음 puffin web browser 스크립트 실행 자체가 안됨. ㅣ 스크립트 실행이 안됨. "중지하는 중.." 이라는 말만 뜨고 다른 건 없다. 근데 계속 www.dailymail.co.uk 로 이동하려고 하긴 한다. 계속 왔다리갔다리 하다가 결국에는 이동하긴 한다. 이것이 url spoofing 취약점인가ㅏ...? CLICK CLICK 버튼이 눌리지 않는다. 아랍어를 이용해서 URL Spoofing http://www.secu..

JEB 초기 사용법

필자는 윈도우에서 JEB를 실행했었는데, jeb_wincon.bat을 실행시켰을 때 JEB가 분명 잘 실행되곤 있지만, 아무런 유익한 화면이 나오지 않는 경우였다. 이 경우엔 윈도우 탭에서 'Show View'라는 버튼을 이리저리 만져보다 보면 해결된다. 그리고 JEB로 *.apk 파일을 까봤을 때 이런 파일들이 나온다. 이 때 'Bytecode'를 누르면 smali로 특정 apk의 bytecode를 본 것처럼 나온다. (밑에 있는 사진처럼) 이 ByteCode에서 'q'를 누르면 Native한 Java 코드로 변환가능하다. (밑에 있는 사진을 참고하자) 일단 이 정도가 간단한 사용법이고 추후에 더 알게 된 사실을 블로그에 올리겠다.