>

angr 쓰기

Memo 2016. 8. 18. 19:14

https://github.com/angr/angr-doc 여기에 설명 자세히 나와있음.


mkvirtualenv를 쓰기 위해 관련 모듈을 깔아준다.

pip install virtualenv
pip install virtualenvwrapper
이후에
mkvirtualenv angr && pip install angr
를 치고 파이썬에서
import angr
로 확인해보면 된다. 예제는 github 사이트에 있으므로 알아서 보면 됨


mkvirtualenv 를 치면 쉘 앞에 (angr) 이게 붙는데 빠져나오려면 deavtivate 를 쓰면 된다.

'Memo' 카테고리의 다른 글

Windows Exploit 관련 레퍼런스  (0) 2016.07.06
socat 바인딩 하기  (0) 2016.05.21
Angular XSS  (0) 2016.03.06
ubuntu에 pyCrypto 모듈 설치하기  (0) 2016.02.14
Ubuntu 에 apm 마련하기  (0) 2016.02.04
Posted by Mungsul
,


EXE 바이너리 하나가 주어집니다. unpackme 라는 이름 답게 패킹이 되어있는 것을 확인할 수 있는데요. 언패킹 루틴은 단순 XOR로 그리 복잡하지 않습니다. 언패킹 과정 후에는 다음과 같은 주소로 뜁니다. 


위 함수에서 더 타고타고 들어가다 보면 main격의 함수가 호출되고 그 함수 내에서 아래와 같은 루틴을 실행합니다.

저 루틴이 실행되기 전에 프로세스 검색같은거 체크를 거치는데 결국에는 변수 하나를 검사하는거라 그 부분 우회하고, Sleep도 인자 조종해주고 나면 unpackme_unpackme.tmp를 드랍하는 부분으로 갈 수 있습니다.

드랍하는 부분 보면 한 공간을 RtlDecompressBuffer 함수를 이용해 압축해제를 하는 것을 볼 수 있습니다. 압축해제한 후의 메모리를 덤프해서 파일로 저장하면 tmp 파일을 확인 가능합니다. 

푼 파일을 분석하다보면 0x401410 함수를 호출하는 게 보입니다. 이 루틴은 정상적으로는 갈 수 없고 직접 EIP 변경을 해주거나 패치를 해야만 도달할 수 있습니다. 이 루틴을 거치기 전에 자기 자신을 삭제하는 함수로 뛰게 되는데, 저는 그런 식으로 분기하는 루틴을 모두 NOP 처리 해주었습니다.

0x401410에서는 0x401310 함수를 부르는데 이 함수는 주어진 인자를 디코딩해서 출력해주는 함수입니다. 이 부분에서도 자기자신을 삭제하는 곳으로 뛰는 트랩이 몇몇개 있는데 그거 다 NOP 처리해주고 실행하면 문자열이 주르륵 출력됩니다. 그 중에 Flag가 섞여있습니다.


'CTF' 카테고리의 다른 글

[codegate2016] bugbug  (2) 2016.03.19
[HackIM] sandman  (0) 2016.03.03
[hitcon2015] blinkroot  (0) 2015.10.20
[Layer7 2015] Reverse Me, Easy Rerversing  (0) 2015.09.01
Codegate 2015 bookstore  (0) 2015.03.17
Posted by Mungsul
,

https://n0where.net/awesome-windows-exploitation-resources/

'Memo' 카테고리의 다른 글

angr 쓰기  (1) 2016.08.18
socat 바인딩 하기  (0) 2016.05.21
Angular XSS  (0) 2016.03.06
ubuntu에 pyCrypto 모듈 설치하기  (0) 2016.02.14
Ubuntu 에 apm 마련하기  (0) 2016.02.04
Posted by Mungsul
,