y0u_bat
[S.S.A] 시스템해킹 스터디 6주차 (pintool) 본문
taint progation analysis
유저인풋의 data flow를 죄다 트래킹해서
destination , source instruction pointer 등에
영향을 주는 포인트를 알아냄
tainted destination
tainted source
tainted instruction pointer
sysbolic execution Engine -> klee & constraint solver -> z3 (값구해주는거)
—> path explosion
concolic execution
—> conrete excatuion + symbolic execution
conc(rete)+(symb)olic
patch analysis | 1day analysis
-> binary | sure code diffing
vulnerability extrapolation -> fabian yamaguchi
assisted vulnerably
코드 유사도 비교를 통한 취약점 분석
key concept:
기존에 취약하다고 알려진 코드패턴이 다른 코드베이스에서도 발견이 될 경우
그 코드도 취약할 가능성이 높다
가장 많이 사용되는 분야: 소스코드 표절 탐지
과제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <iostream> #include <fstream> #include "pin.H" using std::ofstream; ofstream outFile("flag",ios::out); int result_xor=0; int result_cmp=0; int i_f; char result; void test(INS ins,void *v) { ADDRINT address = INS_Address(ins); if(address >= 0x08048203 && address <= 0x080A3778) { //outFile<<hex<<address<<' '<< INS_Mnemonic(ins) << endl; switch(INS_Opcode(ins)) { case XED_ICLASS_XOR: result_xor = INS_OperandImmediate(ins,1); i_f = 1; break; case XED_ICLASS_CMP: if(i_f == 1) { result_cmp = INS_OperandImmediate(ins,1); result = result_xor^result_cmp; outFile<<result; i_f = 0; }else { result = INS_OperandImmediate(ins,1); outFile<<result; i_f = 0; } } INS_Delete(ins); } } int main(int argc,char *argv[]) { if(PIN_Init(argc,argv)) return -1; INS_AddInstrumentFunction(test,0); PIN_StartProgram(); return 0; } | cs |
핀툴로 인트럭션의 오퍼랜드를 알아낼수있어서
xor랑 cmp의 오퍼랜드 알아내서 xor^cmp 해서 뽑으면 된다.
그런데 보면 xor을 안거치는곳이 있으니 조건만 잘 걸어서 해주면 된다.
그리고 base64 20번 돌려주면 키값이 나온다.
'System' 카테고리의 다른 글
SROP - Sigretrun Oriented Programming (0) | 2016.02.11 |
---|---|
GHOST: glibc gethostbyname buffer overflow 번역 목차 (2/6) (2) | 2016.02.05 |
[SSA] 시스템 스터디 3주차 (0) | 2015.10.20 |
[SSA] 시스템 스터디 1주차 정리(어셈블리) (1) | 2015.10.06 |
[Window] 2. 윈도우 버퍼오버플로우(여러가지 쉘코드로 점프) (0) | 2015.09.01 |