레드벨벳 슬기 CTF나 워게임 Command Injection류의 문제들에서 ls, dir 로 file listing이 필요한 경우가 있는데 보통 ls와 dir은 대표적인 명령어이기 때문에 막혀있는 경우가 많을 것이다. 그의 예시로 다음과 같은 코드가 있다고 가정해보자. 우회하라고하면 쉽게 우회할 수 있겠으나, 일단 이 문제의 핵심은 ls, dir 을 통해 directory listing이 되지 않는다는 것이다. 이럴 경우 vi 를 이용해도 우회할 수 있다. `vi . `를 하면 다음과 같은 화면을 볼 수 있다. 해당 디렉터리 안에는 index.php 라는 파일과 test 라는 디렉터리 하나가 있는데 vi . 명령을 통해 잘 나타났다. 다양하게 응용가능
에이프릴 이나은 예전에 디미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의 advanced한 글이다. Python module 파이썬에는 모듈이라는 개념이 있다. import 로 가져오는 것이 바로 모듈이며, 이 모듈은 C++에서의 namespace와 약간 비슷한 개념이다. (제가 C++를 많이 배운 편이 아니라, 만약 아니라면 댓글로 지적 부탁드립니다.) 만약 모듈을 import 했다면, 우리는 모듈 내의 변수, 함수 등의 자원들을 사용할 수 있다. dir() 함수로 확인 가능하다. 모듈 안에 있는 자원은 . (dot) 을 통해서 접근 가능하다. 파이썬 Jail Break 문제에서 system이 막혔을 때, system 함수를 사용하지 못할 것이다. os.system이 막혔으니까. (물론, system command를 ..
이 글은 해당 글의 확장판의 형식으로 작성된 글이다. 파이썬은 import와 관련된 함수나 모듈이 생각보다 많다. 위에 적혀있는 __import__가 대표적으로 알고 있는 import 관련 함수이다. importlibimportlib 이라는 모듈은 python.org에서 설명하기론, __import__() 함수의 연장선이라고 한다. 그래서 import 와 관련된 함수들이 많다. importlib.import_module() built-in function의 __import__ 함수와 사실상 같은 역할을 하는 함수이다. 하지만, import 키워드를 막은 경우가 많아서 못 쓸 것 같긴 하다. importlib.sys sys 모듈과 동일하다!! sys 모듈의 modules 라는 dict 형의 변수를 이용하면..
이번에 코드게이트에서도 Python Jail 문제가 나왔다시피, 많은 CTF에서 Jail 문제가 나온다. 요즘들어서 부쩍 Python Jail 문제에 관심이 많아져서 이 글에 정리해보려고 한다. dir()dir 함수는 안에 있는 값이 object라면 그 모듈의 attributes 들을 반환하고, class라면 안에 정의된 함수와, 변수들을 반환한다. Python Jail 의 기본은 해당 함수를 이용해서 어떤 속성을 갖고 있는지 확인하는 것이다. __import__ 이것은 Python의 Builtin Function이다. 원래의 import 구문과 역할은 똑같으나, 한 명령에서만 import 하겠다는 뜻이다. 정확히 무슨 뜻인지 모르겠으면 아래의 코드를 확인하자. 아래는 2017년 사이버가디언즈 챌린지 예..
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..
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_wincon.bat을 실행시켰을 때 JEB가 분명 잘 실행되곤 있지만, 아무런 유익한 화면이 나오지 않는 경우였다. 이 경우엔 윈도우 탭에서 'Show View'라는 버튼을 이리저리 만져보다 보면 해결된다. 그리고 JEB로 *.apk 파일을 까봤을 때 이런 파일들이 나온다. 이 때 'Bytecode'를 누르면 smali로 특정 apk의 bytecode를 본 것처럼 나온다. (밑에 있는 사진처럼) 이 ByteCode에서 'q'를 누르면 Native한 Java 코드로 변환가능하다. (밑에 있는 사진을 참고하자) 일단 이 정도가 간단한 사용법이고 추후에 더 알게 된 사실을 블로그에 올리겠다.