BUUCTF Re部分wp(九)
阿新 • • 發佈:2020-11-03
[INSHack2017]secure-garden-shed-v1
給了兩個檔案sgs-exec-release,lock.sgsc
嘗試一下發現使用方法
./sgs-exec-release lock.sgsc
看了下ida,邏輯應該是在lock.sgsc裡,直接動調搜尋字串
[INSHack2018]Tricky-Part2
main開頭是個
這個abort_trap才是要分析的函式
flag在check裡
[INSHack2017]proprietary-cctv-software
pyc,執行顯示
RuntimeError: Bad magic number in .pyc file
不過現在uncompyle6可以直接逆,逆完發現使用了PyQt5,先下載
pip3 install PyQt5
看裡面程式碼,成功會執行
def activation_passed(self):
self.lab_result.setText('Activation is a success !\n%s' % self.finalize())
self.show()
所以改成
def activation_failed(self):
self.lab_result.setText('Activation is a success !\n%s ' % self.finalize())
self.show()
執行後直接點取消就行了
[FBCTF2019]go_get_the_flag
go逆向,去了符號表
動調一直跟,找到一處判斷長度為18
往下找,當經過一個函式時,會輸出Wrong
這裡rdx的值挺奇怪,感覺像是字串,就去找了找賦給rdx值的地方
這裡就是要輸入的值,輸入得flag
[watevrCTF 2019]Hacking For Vodka
簡單題,main有處反調
關鍵函式是下面這個,找到比對處,發現是明文比對
直接patch,輸出flag
[watevrCTF 2019]Watshell
可以看到輸入由空格分離的數字組成,跟進去發現關鍵部分是個遞迴,由此直接爆破
#include<stdio.h>
__int64_t sub(__int64_t a1, __int64_t a2, __int64_t a3)
{
__int64_t result;
__int64_t v4;
v4 = a1 % a3;
if ( !a2 )
return 1LL;
if ( a2 == 1 )
return a1 % a3;
if ( !(a2 & 1) )
return sub(v4 * v4 % a3, a2 / 2, a3) % a3;
result = a2 % 2;
if ( a2 % 2 == 1 )
result = v4 * sub(v4, a2 - 1, a3) % a3;
return result;
}
int main(void){
__int64_t result = 0;
char c[25]="give_me_the_flag_please";
for(int j=0;j<23;j++){
for(int i=0;i<200;i++){
result = sub(i,0x71,0x8f);
if(result == c[j]){
printf("%d ",i);
break;
}
}
}
return 0;
}