主頁 >  其他 > REVERSE-PRACTICE-BUUCTF-14

REVERSE-PRACTICE-BUUCTF-14

2021-02-14 11:11:25 其他

REVERSE-PRACTICE-BUUCTF-14

    • [UTCTF2020]basic-re
    • equation
    • [安洵杯 2019]crackMe
    • [FlareOn5]Minesweeper Championship Registration

[UTCTF2020]basic-re

elf檔案,無殼,ida分析
main函式就是簡單的加減乘除運算
shift+F12,在字串視窗看到flag
basicre-flag

equation

html檔案,瀏覽器打開后什么都沒有,查看網頁源代碼
equation-html
是jsfuck混淆,找了好久,可以用Google Closure Compiler對js進行壓縮
壓縮步驟:
/******************************************************************************
把js代碼去掉script頭和尾
放到自己的jscompiler檔案夾里
打開powershell
執行
java -jar .\compiler.jar --js .\temp.js --js_output_file temp-compiled.js
壓縮前的js檔案名為temp.js
壓縮后為temp-compiled.js
然后再分析js代碼
如果想要運行壓縮后的js代碼
則需要在代碼前后重新加回script和/script
然后后綴改成.html 雙擊用瀏覽器打開即可
******************************************************************************/
用上述方法對題目所給檔案操作的結果如下:
是對flag內容進行方程組驗證

flag="xxx";
42==flag.length&&(l=flag.split("").map(function(a){return a.charCodeAt()}),861==l["40"]+l["35"]+l["34"]-l[0]-l["15"]-l["37"]+l[7]+l[6]-l["26"]+l["20"]+l["19"]+l[8]-l["17"]-l["14"]-l["38"]+l[1]-l[9]+l["22"]+l["41"]+l[3]-l["29"]-l["36"]-l["25"]+l[5]+l["32"]-l["16"]+l["12"]-l["24"]+l["30"]+l["39"]+l["10"]+l[2]+l["27"]+l["28"]+l["21"]+l["33"]-l["18"]+l[4]&&-448==l["31"]+l["26"]+l["11"]-l["33"]+l["27"]-l[3]+l["12"]+l["30"]+l[1]+l["32"]-l["16"]+l[7]+l["10"]-l["25"]+l["38"]-l["41"]-l["14"]-l["19"]+l["29"]+
l["36"]-l[9]-l["28"]-l[6]-l[0]-l["22"]-l["18"]+l["20"]-l["37"]+l[4]-l["24"]+l["34"]-l["21"]-l["39"]-l["23"]-l[8]-l["40"]+l["15"]-l["35"]&&1244==l["26"]+l["14"]+l["15"]+l[9]+l["13"]+l["30"]-l["11"]+l["18"]+l["23"]+l[7]+l[3]+l["12"]+l["25"]-l["24"]-l["39"]-l["35"]-l["20"]+l["40"]-l[8]+l["10"]-l[5]-l["33"]-l["31"]+l["32"]+l["19"]+l["21"]-l[6]+l[1]+l["16"]+l["17"]+l["29"]+l["22"]-l[4]-l["36"]+l["41"]+l["38"]+l[2]+l[0]&&-39==l[5]+l["22"]+l["15"]+l[2]-l["28"]-l["10"]-l[3]-l["13"]-l["18"]+l["30"]-l[9]+l["32"]+
l["19"]+l["34"]+l["23"]-l["17"]+l["16"]-l[7]+l["24"]-l["39"]+l[8]-l["12"]-l["40"]-l["25"]+l["37"]-l["35"]+l["11"]-l["14"]+l["20"]-l["27"]+l[4]-l["33"]-l["21"]+l["31"]-l[6]+l[1]+l["38"]-l["29"]&&485==l["41"]-l["29"]+l["23"]-l[4]+l["20"]-l["33"]+l["35"]+l[3]-l["19"]-l["21"]+l["11"]+l["26"]-l["24"]-l["17"]+l["37"]+l[1]+l["16"]-l[0]-l["13"]+l[7]+l["10"]+l["14"]+l["22"]+l["39"]-l["40"]+l["34"]-l["38"]+l["32"]+l["25"]-l[2]+l["15"]+l[6]+l["28"]-l[8]-l[5]-l["31"]-l["30"]-l["27"]&&-1068==l["13"]+l["19"]+l["21"]-
l[2]-l["33"]-l[0]+l["39"]+l["31"]-l["23"]-l["41"]+l["38"]-l["29"]+l["36"]+l["24"]-l["20"]-l[9]-l["32"]+l["37"]-l["35"]+l["40"]+l[7]-l["26"]+l["15"]-l["10"]-l[6]-l["16"]-l[4]-l[5]-l["30"]-l["14"]-l["22"]-l["25"]-l["34"]-l["17"]-l["11"]-l["27"]+l[1]-l["28"]&&939==l["32"]+l[0]+l[9]+l["14"]+l["11"]+l["18"]-l["13"]+l["24"]-l[2]-l["15"]+l["19"]-l["21"]+l[1]+l["39"]-l[8]-l[3]+l["33"]+l[6]-l[5]-l["35"]-l["28"]+l["25"]-l["41"]+l["22"]-l["17"]+l["10"]+l["40"]+l["34"]+l["27"]-l["20"]+l["23"]+l["31"]-l["16"]+
l[7]+l["12"]-l["30"]+l["29"]-l[4]&&413==l["19"]+l["11"]+l["20"]-l["16"]+l["40"]+l["25"]+l[1]-l["31"]+l["28"]-l["23"]+l["14"]-l[9]-l["27"]+l["35"]+l["39"]-l["37"]-l[8]-l["22"]+l[5]-l[6]+l[0]-l["32"]+l["24"]+l["33"]+l["29"]+l["38"]+l["15"]-l[2]+l["30"]+l[7]+l["12"]-l[3]-l["17"]+l["34"]+l["41"]-l[4]-l["13"]-l["26"]&&117==l["22"]+l[4]-l[9]+l["34"]+l["35"]+l["17"]+l[3]-l["24"]+l["38"]-l[5]-l["41"]-l["31"]-l[0]-l["25"]+l["33"]+l["15"]-l[1]-l["10"]+l["16"]-l["29"]-l["12"]+l["26"]-l["39"]-l["21"]-l["18"]-
l[6]-l["40"]-l["13"]+l[8]+l["37"]+l["19"]+l["14"]+l["32"]+l["28"]-l["11"]+l["23"]+l["36"]+l[7]&&-313==l["32"]+l["16"]+l[3]+l["11"]+l["34"]-l["31"]+l["14"]+l["25"]+l[1]-l["30"]-l["33"]-l["40"]-l[4]-l["29"]+l["18"]-l["27"]+l["13"]-l["19"]-l["12"]+l["23"]-l["39"]-l["41"]-l[8]+l["22"]-l[5]-l["38"]-l[9]-l["37"]+l["17"]-l["36"]+l["24"]-l["21"]+l[2]-l["26"]+l["20"]-l[7]+l["35"]-l[0]&&-42==l["40"]-l[1]+l[5]+l[7]+l["33"]+l["29"]+l["12"]+l["38"]-l["31"]+l[2]+l["14"]-l["35"]-l[8]-l["24"]-l["39"]-l[9]-l["28"]+
l["23"]-l["17"]-l["22"]-l["26"]+l["32"]-l["11"]+l[4]-l["36"]+l["10"]+l["20"]-l["18"]-l["16"]+l[6]-l[0]+l[3]-l["30"]+l["37"]-l["19"]+l["21"]+l["25"]-l["15"]&&289==l["21"]+l["26"]-l["17"]-l["25"]+l["27"]-l["22"]-l["39"]-l["23"]-l["15"]-l["20"]-l["32"]+l["12"]+l[3]-l[6]+l["28"]+l["31"]+l["13"]-l["16"]-l["37"]-l["30"]-l[5]+l["41"]+l["29"]+l["36"]+l[1]+l["11"]+l["24"]+l["18"]-l["40"]+l["19"]-l["35"]+l[2]-l["38"]+l["14"]-l[9]+l[4]+l[0]-l["33"]&&-117==l["29"]+l["31"]+l["32"]-l["17"]-l[7]+l["34"]+l[2]+l["14"]+
l["23"]-l[4]+l[3]+l["35"]-l["33"]-l[9]-l["20"]-l["37"]+l["24"]-l["27"]+l["36"]+l["15"]-l["18"]-l[0]+l["12"]+l["11"]-l["38"]+l[6]+l["22"]+l["39"]-l["25"]-l["10"]-l["19"]-l[1]+l["13"]-l["41"]+l["30"]-l["16"]+l["28"]-l["26"]&&-252==l[5]+l["37"]-l["39"]+l[0]-l["27"]+l["12"]+l["41"]-l["22"]+l[8]-l["16"]-l["38"]+l[9]+l["15"]-l["35"]-l["29"]+l["18"]+l[6]-l["25"]-l["28"]+l["36"]+l["34"]+l["32"]-l["14"]-l[1]+l["20"]+l["40"]-l["19"]-l[4]-l[7]+l["26"]+l["30"]-l["10"]+l["13"]-l["21"]+l[2]-l["23"]-l[3]-l["33"]&&
-183==l["29"]+l["10"]-l["41"]-l[9]+l["12"]-l["28"]+l["11"]+l["40"]-l["27"]-l[8]+l["32"]-l["25"]-l["23"]+l["39"]-l[1]-l["36"]-l["15"]+l["33"]-l["20"]+l["18"]+l["22"]-l[3]+l[6]-l["34"]-l["21"]+l["19"]+l["26"]+l["13"]-l[4]+l[7]-l["37"]+l["38"]-l[2]-l["30"]-l[0]-l["35"]+l[5]+l["17"]&&188==l[6]-l[8]-l["20"]+l["34"]-l["33"]-l["25"]-l[4]+l[3]+l["17"]-l["13"]-l["15"]-l["40"]+l[1]-l["30"]-l["14"]-l["28"]-l["35"]+l["38"]-l["22"]+l[2]+l["24"]-l["29"]+l[5]+l[9]+l["37"]+l["23"]-l["18"]+l["19"]-l["21"]+l["11"]+
l["36"]+l["41"]-l[7]-l["32"]+l["10"]+l["26"]-l[0]+l["31"]&&1036==l[3]+l[6]-l["41"]+l["10"]+l["39"]+l["37"]+l[1]+l[8]+l["21"]+l["24"]+l["29"]+l["12"]+l["27"]-l["38"]+l["11"]+l["23"]+l["28"]+l["33"]-l["31"]+l["14"]-l[5]+l["32"]-l["17"]+l["40"]-l["34"]+l["20"]-l["22"]-l["16"]+l["19"]+l[2]-l["36"]-l[7]+l["18"]+l["15"]+l["26"]-l[0]-l[4]+l["35"]&&328==l["28"]-l["33"]+l[2]+l["37"]-l["12"]-l[9]-l["39"]+l["16"]-l["32"]+l[8]-l["36"]+l["31"]+l["10"]-l[4]+l["21"]-l["25"]+l["18"]+l["24"]-l[0]+l["29"]-l["26"]+
l["35"]-l["22"]-l["41"]-l[6]+l["15"]+l["19"]+l["40"]+l[7]+l["34"]+l["17"]-l[3]-l["13"]+l[5]+l["23"]+l["11"]-l["27"]+l[1]&&-196==l["22"]-l["32"]+l["17"]-l[9]+l["20"]-l["18"]-l["34"]+l["23"]+l["36"]-l["35"]-l["38"]+l["27"]+l[4]-l[5]-l["41"]+l["29"]+l["33"]+l[0]-l["37"]+l["28"]-l["40"]-l["11"]-l["12"]+l[7]+l[1]+l[2]-l["26"]-l["16"]-l[8]+l["24"]-l["25"]+l[3]-l[6]-l["19"]-l["39"]-l["14"]-l["31"]+l["10"]&&7==l["11"]+l["13"]+l["14"]-l["15"]-l["29"]-l[2]+l[7]+l["20"]+l["30"]-l["36"]-l["33"]-l["19"]+l["31"]+
l[0]-l["39"]-l[4]-l[6]+l["38"]+l["35"]-l["28"]+l["34"]-l[9]-l["23"]-l["26"]+l["37"]-l[8]-l["27"]+l[5]-l["41"]+l[3]+l["17"]+l["40"]-l["10"]+l["25"]+l["12"]-l["24"]+l["18"]+l["32"]&&-945==l["34"]-l["37"]-l["40"]+l[4]-l["22"]-l["31"]-l[6]+l["38"]+l["13"]-l["28"]+l[8]+l["30"]-l["20"]-l[7]-l["32"]+l["26"]+l[1]-l["18"]+l[5]+l["35"]-l["24"]-l["41"]+l[9]-l[0]-l[2]-l["15"]-l["10"]+l["12"]-l["36"]+l["33"]-l["16"]-l["14"]-l["25"]-l["29"]-l["21"]+l["27"]+l[3]-l["17"]&&-480==l["12"]-l["30"]-l[8]+l["20"]-l[2]-
l["36"]-l["25"]-l[0]-l["19"]-l["28"]-l[7]-l["11"]-l["33"]+l[4]-l["23"]+l["10"]-l["41"]+l["39"]-l["32"]+l["27"]+l["18"]+l["15"]+l["34"]+l["13"]-l["40"]+l["29"]-l[6]+l["37"]-l["14"]-l["16"]+l["38"]-l["26"]+l["17"]+l["31"]-l["22"]-l["35"]+l[5]-l[1]&&-213==l["36"]-l["11"]-l["34"]+l[8]+l[0]+l["15"]+l["28"]-l["39"]-l["32"]-l[2]-l["27"]+l["22"]+l["16"]-l["30"]-l[3]+l["31"]-l["26"]+l["20"]+l["17"]-l["29"]-l["18"]+l["19"]-l["10"]+l[6]-l[5]-l["38"]-l["25"]-l["24"]+l[4]+l["23"]+l[9]+l["14"]+l["21"]-l["37"]+
l["13"]-l["41"]-l["12"]+l["35"]&&-386==l["19"]-l["36"]-l["12"]+l["33"]-l["27"]-l["37"]-l["25"]+l["38"]+l["16"]-l["18"]+l["22"]-l["39"]+l["13"]-l[7]-l["31"]-l["26"]+l["15"]-l["10"]-l[9]-l[2]-l["30"]-l["11"]+l["41"]-l[4]+l["24"]+l["34"]+l[5]+l["17"]+l["14"]+l[6]+l[8]-l["21"]-l["23"]+l["32"]-l[1]-l["29"]-l[0]+l[3]&&-349==l[0]+l[7]-l["28"]-l["38"]+l["19"]+l["31"]-l[5]+l["24"]-l[3]+l["33"]-l["12"]-l["29"]+l["32"]+l[1]-l["34"]-l[9]-l["25"]+l["26"]-l[8]+l[4]-l["10"]+l["40"]-l["15"]-l["11"]-l["27"]+l["36"]+
l["14"]+l["41"]-l["35"]-l["13"]-l["17"]-l["21"]-l["18"]+l["39"]-l[2]+l["20"]-l["23"]-l["22"]&&98==l["10"]+l["22"]+l["21"]-l[0]+l["15"]-l[6]+l["20"]-l["29"]-l["30"]-l["33"]+l["19"]+l["23"]-l["28"]+l["41"]-l["27"]-l["12"]-l["37"]-l["32"]+l["34"]-l["36"]+l[3]+l[1]-l["13"]+l["18"]+l["14"]+l[9]+l[7]-l["39"]+l[8]+l[2]-l["31"]-l[5]-l["40"]+l["38"]-l["26"]-l[4]+l["16"]-l["25"]&&-412==l["28"]+l["38"]+l["20"]+l[0]-l[5]-l["34"]-l["41"]+l["22"]-l["26"]+l["11"]+l["29"]+l["31"]-l[3]-l["16"]+l["23"]+l["17"]-l["18"]+
l[9]-l[4]-l["12"]-l["19"]-l["40"]-l["27"]+l["33"]+l[8]-l["37"]+l[2]+l["15"]-l["24"]-l["39"]+l["10"]+l["35"]-l[1]+l["30"]-l["36"]-l["25"]-l["14"]-l["32"]&&-95==l[1]-l["24"]-l["29"]+l["39"]+l["41"]+l[0]+l[9]-l["19"]+l[6]-l["37"]-l["22"]+l["32"]+l["21"]+l["28"]+l["36"]+l[4]-l["17"]+l["20"]-l["13"]-l["35"]-l[5]+l["33"]-l["27"]-l["30"]+l["40"]+l["25"]-l["18"]+l["34"]-l[3]-l["10"]-l["16"]-l["23"]-l["38"]+l[8]-l["14"]-l["11"]-l[7]+l["12"]&&-379==l[2]-l["24"]+l["31"]+l[0]+l[9]-l[6]+l[7]-l[1]-l["22"]+l[8]-
l["23"]+l["40"]+l["20"]-l["38"]-l["11"]-l["14"]+l["18"]-l["36"]+l["15"]-l[4]-l["41"]-l["12"]-l["34"]+l["32"]-l["35"]+l["17"]-l["21"]-l["10"]-l["29"]+l["39"]-l["16"]+l["27"]+l["26"]-l[3]-l[5]+l["13"]+l["25"]-l["28"]&&861==l["19"]-l["17"]+l["31"]+l["14"]+l[6]-l["12"]+l["16"]-l[8]+l["27"]-l["13"]+l["41"]+l[2]-l[7]+l["32"]+l[1]+l["25"]-l[9]+l["37"]+l["34"]-l["18"]-l["40"]-l["11"]-l["10"]+l["38"]+l["21"]+l[3]-l[0]+l["24"]+l["15"]+l["23"]-l["20"]+l["26"]+l["22"]-l[4]-l["28"]-l[5]+l["39"]+l["35"]&&1169==
l["35"]+l["36"]-l["16"]-l["26"]-l["31"]+l[0]+l["21"]-l["13"]+l["14"]+l["39"]+l[7]+l[4]+l["34"]+l["38"]+l["17"]+l["22"]+l["32"]+l[5]+l["15"]+l[8]-l["29"]+l["40"]+l["24"]+l[6]+l["30"]-l[2]+l["25"]+l["23"]+l[1]+l["12"]+l[9]-l["10"]-l[3]-l["19"]+l["20"]-l["37"]-l["33"]-l["18"]&&-1236==l["13"]+l[0]-l["25"]-l["32"]-l["21"]-l["34"]-l["14"]-l[9]-l[8]-l["15"]-l["16"]+l["38"]-l["35"]-l["30"]-l["40"]-l["12"]+l[3]-l["19"]+l[4]-l["41"]+l[2]-l["36"]+l["37"]+l["17"]-l[1]+l["26"]-l["39"]-l["10"]-l["33"]+l[5]-l["27"]-
l["23"]-l["24"]-l[7]+l["31"]-l["28"]-l["18"]+l[6]&&-114==l["20"]+l["27"]-l["29"]-l["25"]-l[3]+l["28"]-l["32"]-l["11"]+l["10"]+l["31"]+l["16"]+l["21"]-l[7]+l[4]-l["24"]-l["35"]+l["26"]+l["12"]-l["37"]+l[6]+l["23"]+l["41"]-l["39"]-l["38"]+l["40"]-l["36"]+l[8]-l[9]-l[5]-l[1]-l["13"]-l["14"]+l["19"]+l[0]-l["34"]-l["15"]+l["17"]+l["22"]&&659==l["12"]-l["28"]-l["13"]-l["23"]-l["33"]+l["18"]+l["10"]+l["11"]+l[2]-l["36"]+l["41"]-l["16"]+l["39"]+l["34"]+l["32"]+l["37"]-l["38"]+l["20"]+l[6]+l[7]+l["31"]+l[5]+
l["22"]-l[4]-l["15"]-l["24"]+l["17"]-l[3]+l[1]-l["35"]-l[9]+l["30"]+l["25"]-l[0]-l[8]-l["14"]+l["26"]+l["21"]&&-430==l["21"]-l[3]+l[7]-l["27"]+l[0]-l["32"]-l["24"]-l["37"]+l[4]-l["22"]+l["20"]-l[5]-l["30"]-l["31"]-l[1]+l["15"]+l["41"]+l["12"]+l["40"]+l["38"]-l["17"]-l["39"]+l["19"]-l["13"]+l["23"]+l["18"]-l[2]+l[6]-l["33"]-l[9]+l["28"]+l[8]-l["16"]-l["10"]-l["14"]+l["34"]+l["35"]-l["11"]&&-513==l["11"]-l["23"]-l[9]-l["19"]+l["17"]+l["38"]-l["36"]-l["22"]-l["10"]+l["27"]-l["14"]-l[4]+l[5]+l["31"]+
l[2]+l[0]-l["16"]-l[8]-l["28"]+l[3]+l["40"]+l["25"]-l["33"]+l["13"]-l["32"]-l["35"]+l["26"]-l["20"]-l["41"]-l["30"]-l["12"]-l[7]+l["37"]-l["39"]+l["15"]+l["18"]-l["29"]-l["21"]&&-502==l["32"]+l["19"]+l[4]-l["13"]-l["17"]-l["30"]+l[5]-l["33"]-l["37"]-l["15"]-l["18"]+l[7]+l["25"]-l["14"]+l["35"]+l["40"]+l["16"]+l[1]+l[2]+l["26"]-l[3]-l["39"]-l["22"]+l["23"]-l["36"]-l["27"]-l[9]+l[6]-l["41"]-l[0]-l["31"]-l["20"]+l["12"]-l[8]+l["29"]-l["11"]-l["34"]+l["21"]&&853==l["30"]-l["31"]-l["36"]+l[3]+l[9]-l["40"]-
l["33"]+l["25"]+l["39"]-l["26"]+l["23"]-l[0]-l["29"]-l["32"]-l[4]+l["37"]+l["28"]+l["21"]+l["17"]+l[2]+l["24"]+l[6]+l[5]+l[8]+l["16"]+l["27"]+l["19"]+l["12"]+l["20"]+l["41"]-l["22"]+l["15"]-l["11"]+l["34"]-l["18"]-l["38"]+l[1]-l["14"]&&-28==l["38"]-l["10"]+l["16"]+l[8]+l["21"]-l["25"]+l["36"]-l["30"]+l["31"]-l[3]+l[5]-l["15"]+l["23"]-l["28"]+l[7]+l["12"]-l["29"]+l["22"]-l[0]-l["37"]-l["14"]-l["11"]+l["32"]+l["33"]-l[9]+l["39"]+l["41"]-l["19"]-l[1]+l["18"]-l[4]-l[6]+l["13"]+l["20"]-l[2]-l["35"]-l["26"]+
l["27"]&&-529==l["11"]+l["18"]-l["26"]+l["15"]-l["14"]-l["33"]+l[7]-l["23"]-l["25"]+l[0]-l[6]-l["21"]-l["16"]+l["17"]-l["19"]-l["28"]-l["38"]-l["37"]+l[9]+l["20"]-l[8]-l[3]+l["22"]-l["35"]-l["10"]-l["31"]-l[2]+l["41"]-l[1]-l[4]+l["24"]-l["34"]+l["39"]+l["40"]+l["32"]-l[5]+l["36"]-l["27"]&&-12==l["38"]+l[8]+l["36"]+l["35"]-l["23"]-l["34"]+l["13"]-l[4]-l["27"]-l["24"]+l["26"]+l["31"]-l["30"]-l[5]-l["40"]+l["28"]-l["11"]-l[2]-l["39"]+l["15"]+l["10"]-l["17"]+l[3]+l["19"]+l["22"]+l["33"]+l[0]+l["37"]+
l["16"]-l[9]-l["32"]+l["25"]-l["21"]-l["12"]+l[6]-l["41"]+l["20"]-l["18"]&&81==l[6]-l["30"]-l["20"]-l["27"]-l["14"]-l["39"]+l["41"]-l["33"]-l[0]+l["25"]-l["32"]-l[3]+l["26"]-l["12"]+l[8]-l["35"]-l["24"]+l["15"]+l[9]-l[4]+l["13"]+l["36"]+l["34"]+l[1]-l["28"]-l["21"]+l["18"]+l["23"]+l["29"]-l["10"]-l["38"]+l["22"]+l["37"]+l[5]+l["19"]+l[7]+l["16"]-l["31"]?alert("Congrats"):alert("Failed"));

利用python的z3庫解方程組

from z3 import *
flag=[Int('flag[%d]' %i ) for i in range(42)]
s=Solver()
s.add(861==flag[40]+flag[35]+flag[34]-flag[0]-flag[15]-flag[37]+flag[7]+flag[6]-flag[26]+flag[20]+flag[19]+flag[8]-flag[17]-flag[14]-flag[38]+flag[1]-flag[9]+flag[22]+flag[41]+flag[3]-flag[29]-flag[36]-flag[25]+flag[5]+flag[32]-flag[16]+flag[12]-flag[24]+flag[30]+flag[39]+flag[10]+flag[2]+flag[27]+flag[28]+flag[21]+flag[33]-flag[18]+flag[4])
s.add(-448==flag[31]+flag[26]+flag[11]-flag[33]+flag[27]-flag[3]+flag[12]+flag[30]+flag[1]+flag[32]-flag[16]+flag[7]+flag[10]-flag[25]+flag[38]-flag[41]-flag[14]-flag[19]+flag[29]+flag[36]-flag[9]-flag[28]-flag[6]-flag[0]-flag[22]-flag[18]+flag[20]-flag[37]+flag[4]-flag[24]+flag[34]-flag[21]-flag[39]-flag[23]-flag[8]-flag[40]+flag[15]-flag[35])
s.add(1244==flag[26]+flag[14]+flag[15]+flag[9]+flag[13]+flag[30]-flag[11]+flag[18]+flag[23]+flag[7]+flag[3]+flag[12]+flag[25]-flag[24]-flag[39]-flag[35]-flag[20]+flag[40]-flag[8]+flag[10]-flag[5]-flag[33]-flag[31]+flag[32]+flag[19]+flag[21]-flag[6]+flag[1]+flag[16]+flag[17]+flag[29]+flag[22]-flag[4]-flag[36]+flag[41]+flag[38]+flag[2]+flag[0])
s.add(-39==flag[5]+flag[22]+flag[15]+flag[2]-flag[28]-flag[10]-flag[3]-flag[13]-flag[18]+flag[30]-flag[9]+flag[32]+flag[19]+flag[34]+flag[23]-flag[17]+flag[16]-flag[7]+flag[24]-flag[39]+flag[8]-flag[12]-flag[40]-flag[25]+flag[37]-flag[35]+flag[11]-flag[14]+flag[20]-flag[27]+flag[4]-flag[33]-flag[21]+flag[31]-flag[6]+flag[1]+flag[38]-flag[29])
s.add(485==flag[41]-flag[29]+flag[23]-flag[4]+flag[20]-flag[33]+flag[35]+flag[3]-flag[19]-flag[21]+flag[11]+flag[26]-flag[24]-flag[17]+flag[37]+flag[1]+flag[16]-flag[0]-flag[13]+flag[7]+flag[10]+flag[14]+flag[22]+flag[39]-flag[40]+flag[34]-flag[38]+flag[32]+flag[25]-flag[2]+flag[15]+flag[6]+flag[28]-flag[8]-flag[5]-flag[31]-flag[30]-flag[27])
s.add(-1068==flag[13]+flag[19]+flag[21]-flag[2]-flag[33]-flag[0]+flag[39]+flag[31]-flag[23]-flag[41]+flag[38]-flag[29]+flag[36]+flag[24]-flag[20]-flag[9]-flag[32]+flag[37]-flag[35]+flag[40]+flag[7]-flag[26]+flag[15]-flag[10]-flag[6]-flag[16]-flag[4]-flag[5]-flag[30]-flag[14]-flag[22]-flag[25]-flag[34]-flag[17]-flag[11]-flag[27]+flag[1]-flag[28])
s.add(939==flag[32]+flag[0]+flag[9]+flag[14]+flag[11]+flag[18]-flag[13]+flag[24]-flag[2]-flag[15]+flag[19]-flag[21]+flag[1]+flag[39]-flag[8]-flag[3]+flag[33]+flag[6]-flag[5]-flag[35]-flag[28]+flag[25]-flag[41]+flag[22]-flag[17]+flag[10]+flag[40]+flag[34]+flag[27]-flag[20]+flag[23]+flag[31]-flag[16]+flag[7]+flag[12]-flag[30]+flag[29]-flag[4])
s.add(413==flag[19]+flag[11]+flag[20]-flag[16]+flag[40]+flag[25]+flag[1]-flag[31]+flag[28]-flag[23]+flag[14]-flag[9]-flag[27]+flag[35]+flag[39]-flag[37]-flag[8]-flag[22]+flag[5]-flag[6]+flag[0]-flag[32]+flag[24]+flag[33]+flag[29]+flag[38]+flag[15]-flag[2]+flag[30]+flag[7]+flag[12]-flag[3]-flag[17]+flag[34]+flag[41]-flag[4]-flag[13]-flag[26])
s.add(117==flag[22]+flag[4]-flag[9]+flag[34]+flag[35]+flag[17]+flag[3]-flag[24]+flag[38]-flag[5]-flag[41]-flag[31]-flag[0]-flag[25]+flag[33]+flag[15]-flag[1]-flag[10]+flag[16]-flag[29]-flag[12]+flag[26]-flag[39]-flag[21]-flag[18]-flag[6]-flag[40]-flag[13]+flag[8]+flag[37]+flag[19]+flag[14]+flag[32]+flag[28]-flag[11]+flag[23]+flag[36]+flag[7])
s.add(-313==flag[32]+flag[16]+flag[3]+flag[11]+flag[34]-flag[31]+flag[14]+flag[25]+flag[1]-flag[30]-flag[33]-flag[40]-flag[4]-flag[29]+flag[18]-flag[27]+flag[13]-flag[19]-flag[12]+flag[23]-flag[39]-flag[41]-flag[8]+flag[22]-flag[5]-flag[38]-flag[9]-flag[37]+flag[17]-flag[36]+flag[24]-flag[21]+flag[2]-flag[26]+flag[20]-flag[7]+flag[35]-flag[0])
s.add(-42==flag[40]-flag[1]+flag[5]+flag[7]+flag[33]+flag[29]+flag[12]+flag[38]-flag[31]+flag[2]+flag[14]-flag[35]-flag[8]-flag[24]-flag[39]-flag[9]-flag[28]+flag[23]-flag[17]-flag[22]-flag[26]+flag[32]-flag[11]+flag[4]-flag[36]+flag[10]+flag[20]-flag[18]-flag[16]+flag[6]-flag[0]+flag[3]-flag[30]+flag[37]-flag[19]+flag[21]+flag[25]-flag[15])
s.add(289==flag[21]+flag[26]-flag[17]-flag[25]+flag[27]-flag[22]-flag[39]-flag[23]-flag[15]-flag[20]-flag[32]+flag[12]+flag[3]-flag[6]+flag[28]+flag[31]+flag[13]-flag[16]-flag[37]-flag[30]-flag[5]+flag[41]+flag[29]+flag[36]+flag[1]+flag[11]+flag[24]+flag[18]-flag[40]+flag[19]-flag[35]+flag[2]-flag[38]+flag[14]-flag[9]+flag[4]+flag[0]-flag[33])
s.add(-117==flag[29]+flag[31]+flag[32]-flag[17]-flag[7]+flag[34]+flag[2]+flag[14]+flag[23]-flag[4]+flag[3]+flag[35]-flag[33]-flag[9]-flag[20]-flag[37]+flag[24]-flag[27]+flag[36]+flag[15]-flag[18]-flag[0]+flag[12]+flag[11]-flag[38]+flag[6]+flag[22]+flag[39]-flag[25]-flag[10]-flag[19]-flag[1]+flag[13]-flag[41]+flag[30]-flag[16]+flag[28]-flag[26])
s.add(-252==flag[5]+flag[37]-flag[39]+flag[0]-flag[27]+flag[12]+flag[41]-flag[22]+flag[8]-flag[16]-flag[38]+flag[9]+flag[15]-flag[35]-flag[29]+flag[18]+flag[6]-flag[25]-flag[28]+flag[36]+flag[34]+flag[32]-flag[14]-flag[1]+flag[20]+flag[40]-flag[19]-flag[4]-flag[7]+flag[26]+flag[30]-flag[10]+flag[13]-flag[21]+flag[2]-flag[23]-flag[3]-flag[33])
s.add(-183==flag[29]+flag[10]-flag[41]-flag[9]+flag[12]-flag[28]+flag[11]+flag[40]-flag[27]-flag[8]+flag[32]-flag[25]-flag[23]+flag[39]-flag[1]-flag[36]-flag[15]+flag[33]-flag[20]+flag[18]+flag[22]-flag[3]+flag[6]-flag[34]-flag[21]+flag[19]+flag[26]+flag[13]-flag[4]+flag[7]-flag[37]+flag[38]-flag[2]-flag[30]-flag[0]-flag[35]+flag[5]+flag[17])
s.add(188==flag[6]-flag[8]-flag[20]+flag[34]-flag[33]-flag[25]-flag[4]+flag[3]+flag[17]-flag[13]-flag[15]-flag[40]+flag[1]-flag[30]-flag[14]-flag[28]-flag[35]+flag[38]-flag[22]+flag[2]+flag[24]-flag[29]+flag[5]+flag[9]+flag[37]+flag[23]-flag[18]+flag[19]-flag[21]+flag[11]+flag[36]+flag[41]-flag[7]-flag[32]+flag[10]+flag[26]-flag[0]+flag[31])
s.add(1036==flag[3]+flag[6]-flag[41]+flag[10]+flag[39]+flag[37]+flag[1]+flag[8]+flag[21]+flag[24]+flag[29]+flag[12]+flag[27]-flag[38]+flag[11]+flag[23]+flag[28]+flag[33]-flag[31]+flag[14]-flag[5]+flag[32]-flag[17]+flag[40]-flag[34]+flag[20]-flag[22]-flag[16]+flag[19]+flag[2]-flag[36]-flag[7]+flag[18]+flag[15]+flag[26]-flag[0]-flag[4]+flag[35])
s.add(328==flag[28]-flag[33]+flag[2]+flag[37]-flag[12]-flag[9]-flag[39]+flag[16]-flag[32]+flag[8]-flag[36]+flag[31]+flag[10]-flag[4]+flag[21]-flag[25]+flag[18]+flag[24]-flag[0]+flag[29]-flag[26]+flag[35]-flag[22]-flag[41]-flag[6]+flag[15]+flag[19]+flag[40]+flag[7]+flag[34]+flag[17]-flag[3]-flag[13]+flag[5]+flag[23]+flag[11]-flag[27]+flag[1])
s.add(-196==flag[22]-flag[32]+flag[17]-flag[9]+flag[20]-flag[18]-flag[34]+flag[23]+flag[36]-flag[35]-flag[38]+flag[27]+flag[4]-flag[5]-flag[41]+flag[29]+flag[33]+flag[0]-flag[37]+flag[28]-flag[40]-flag[11]-flag[12]+flag[7]+flag[1]+flag[2]-flag[26]-flag[16]-flag[8]+flag[24]-flag[25]+flag[3]-flag[6]-flag[19]-flag[39]-flag[14]-flag[31]+flag[10])
s.add(7==flag[11]+flag[13]+flag[14]-flag[15]-flag[29]-flag[2]+flag[7]+flag[20]+flag[30]-flag[36]-flag[33]-flag[19]+flag[31]+flag[0]-flag[39]-flag[4]-flag[6]+flag[38]+flag[35]-flag[28]+flag[34]-flag[9]-flag[23]-flag[26]+flag[37]-flag[8]-flag[27]+flag[5]-flag[41]+flag[3]+flag[17]+flag[40]-flag[10]+flag[25]+flag[12]-flag[24]+flag[18]+flag[32])
s.add(-945==flag[34]-flag[37]-flag[40]+flag[4]-flag[22]-flag[31]-flag[6]+flag[38]+flag[13]-flag[28]+flag[8]+flag[30]-flag[20]-flag[7]-flag[32]+flag[26]+flag[1]-flag[18]+flag[5]+flag[35]-flag[24]-flag[41]+flag[9]-flag[0]-flag[2]-flag[15]-flag[10]+flag[12]-flag[36]+flag[33]-flag[16]-flag[14]-flag[25]-flag[29]-flag[21]+flag[27]+flag[3]-flag[17])
s.add(-480==flag[12]-flag[30]-flag[8]+flag[20]-flag[2]-flag[36]-flag[25]-flag[0]-flag[19]-flag[28]-flag[7]-flag[11]-flag[33]+flag[4]-flag[23]+flag[10]-flag[41]+flag[39]-flag[32]+flag[27]+flag[18]+flag[15]+flag[34]+flag[13]-flag[40]+flag[29]-flag[6]+flag[37]-flag[14]-flag[16]+flag[38]-flag[26]+flag[17]+flag[31]-flag[22]-flag[35]+flag[5]-flag[1])
s.add(-213==flag[36]-flag[11]-flag[34]+flag[8]+flag[0]+flag[15]+flag[28]-flag[39]-flag[32]-flag[2]-flag[27]+flag[22]+flag[16]-flag[30]-flag[3]+flag[31]-flag[26]+flag[20]+flag[17]-flag[29]-flag[18]+flag[19]-flag[10]+flag[6]-flag[5]-flag[38]-flag[25]-flag[24]+flag[4]+flag[23]+flag[9]+flag[14]+flag[21]-flag[37]+flag[13]-flag[41]-flag[12]+flag[35])
s.add(-386==flag[19]-flag[36]-flag[12]+flag[33]-flag[27]-flag[37]-flag[25]+flag[38]+flag[16]-flag[18]+flag[22]-flag[39]+flag[13]-flag[7]-flag[31]-flag[26]+flag[15]-flag[10]-flag[9]-flag[2]-flag[30]-flag[11]+flag[41]-flag[4]+flag[24]+flag[34]+flag[5]+flag[17]+flag[14]+flag[6]+flag[8]-flag[21]-flag[23]+flag[32]-flag[1]-flag[29]-flag[0]+flag[3])
s.add(-349==flag[0]+flag[7]-flag[28]-flag[38]+flag[19]+flag[31]-flag[5]+flag[24]-flag[3]+flag[33]-flag[12]-flag[29]+flag[32]+flag[1]-flag[34]-flag[9]-flag[25]+flag[26]-flag[8]+flag[4]-flag[10]+flag[40]-flag[15]-flag[11]-flag[27]+flag[36]+flag[14]+flag[41]-flag[35]-flag[13]-flag[17]-flag[21]-flag[18]+flag[39]-flag[2]+flag[20]-flag[23]-flag[22])
s.add(98==flag[10]+flag[22]+flag[21]-flag[0]+flag[15]-flag[6]+flag[20]-flag[29]-flag[30]-flag[33]+flag[19]+flag[23]-flag[28]+flag[41]-flag[27]-flag[12]-flag[37]-flag[32]+flag[34]-flag[36]+flag[3]+flag[1]-flag[13]+flag[18]+flag[14]+flag[9]+flag[7]-flag[39]+flag[8]+flag[2]-flag[31]-flag[5]-flag[40]+flag[38]-flag[26]-flag[4]+flag[16]-flag[25])
s.add(-412==flag[28]+flag[38]+flag[20]+flag[0]-flag[5]-flag[34]-flag[41]+flag[22]-flag[26]+flag[11]+flag[29]+flag[31]-flag[3]-flag[16]+flag[23]+flag[17]-flag[18]+flag[9]-flag[4]-flag[12]-flag[19]-flag[40]-flag[27]+flag[33]+flag[8]-flag[37]+flag[2]+flag[15]-flag[24]-flag[39]+flag[10]+flag[35]-flag[1]+flag[30]-flag[36]-flag[25]-flag[14]-flag[32])
s.add(-95==flag[1]-flag[24]-flag[29]+flag[39]+flag[41]+flag[0]+flag[9]-flag[19]+flag[6]-flag[37]-flag[22]+flag[32]+flag[21]+flag[28]+flag[36]+flag[4]-flag[17]+flag[20]-flag[13]-flag[35]-flag[5]+flag[33]-flag[27]-flag[30]+flag[40]+flag[25]-flag[18]+flag[34]-flag[3]-flag[10]-flag[16]-flag[23]-flag[38]+flag[8]-flag[14]-flag[11]-flag[7]+flag[12])
s.add(-379==flag[2]-flag[24]+flag[31]+flag[0]+flag[9]-flag[6]+flag[7]-flag[1]-flag[22]+flag[8]-flag[23]+flag[40]+flag[20]-flag[38]-flag[11]-flag[14]+flag[18]-flag[36]+flag[15]-flag[4]-flag[41]-flag[12]-flag[34]+flag[32]-flag[35]+flag[17]-flag[21]-flag[10]-flag[29]+flag[39]-flag[16]+flag[27]+flag[26]-flag[3]-flag[5]+flag[13]+flag[25]-flag[28])
s.add(861==flag[19]-flag[17]+flag[31]+flag[14]+flag[6]-flag[12]+flag[16]-flag[8]+flag[27]-flag[13]+flag[41]+flag[2]-flag[7]+flag[32]+flag[1]+flag[25]-flag[9]+flag[37]+flag[34]-flag[18]-flag[40]-flag[11]-flag[10]+flag[38]+flag[21]+flag[3]-flag[0]+flag[24]+flag[15]+flag[23]-flag[20]+flag[26]+flag[22]-flag[4]-flag[28]-flag[5]+flag[39]+flag[35])
s.add(1169==flag[35]+flag[36]-flag[16]-flag[26]-flag[31]+flag[0]+flag[21]-flag[13]+flag[14]+flag[39]+flag[7]+flag[4]+flag[34]+flag[38]+flag[17]+flag[22]+flag[32]+flag[5]+flag[15]+flag[8]-flag[29]+flag[40]+flag[24]+flag[6]+flag[30]-flag[2]+flag[25]+flag[23]+flag[1]+flag[12]+flag[9]-flag[10]-flag[3]-flag[19]+flag[20]-flag[37]-flag[33]-flag[18])
s.add(-1236==flag[13]+flag[0]-flag[25]-flag[32]-flag[21]-flag[34]-flag[14]-flag[9]-flag[8]-flag[15]-flag[16]+flag[38]-flag[35]-flag[30]-flag[40]-flag[12]+flag[3]-flag[19]+flag[4]-flag[41]+flag[2]-flag[36]+flag[37]+flag[17]-flag[1]+flag[26]-flag[39]-flag[10]-flag[33]+flag[5]-flag[27]-flag[23]-flag[24]-flag[7]+flag[31]-flag[28]-flag[18]+flag[6])
s.add(-114==flag[20]+flag[27]-flag[29]-flag[25]-flag[3]+flag[28]-flag[32]-flag[11]+flag[10]+flag[31]+flag[16]+flag[21]-flag[7]+flag[4]-flag[24]-flag[35]+flag[26]+flag[12]-flag[37]+flag[6]+flag[23]+flag[41]-flag[39]-flag[38]+flag[40]-flag[36]+flag[8]-flag[9]-flag[5]-flag[1]-flag[13]-flag[14]+flag[19]+flag[0]-flag[34]-flag[15]+flag[17]+flag[22])
s.add(659==flag[12]-flag[28]-flag[13]-flag[23]-flag[33]+flag[18]+flag[10]+flag[11]+flag[2]-flag[36]+flag[41]-flag[16]+flag[39]+flag[34]+flag[32]+flag[37]-flag[38]+flag[20]+flag[6]+flag[7]+flag[31]+flag[5]+flag[22]-flag[4]-flag[15]-flag[24]+flag[17]-flag[3]+flag[1]-flag[35]-flag[9]+flag[30]+flag[25]-flag[0]-flag[8]-flag[14]+flag[26]+flag[21])
s.add(-430==flag[21]-flag[3]+flag[7]-flag[27]+flag[0]-flag[32]-flag[24]-flag[37]+flag[4]-flag[22]+flag[20]-flag[5]-flag[30]-flag[31]-flag[1]+flag[15]+flag[41]+flag[12]+flag[40]+flag[38]-flag[17]-flag[39]+flag[19]-flag[13]+flag[23]+flag[18]-flag[2]+flag[6]-flag[33]-flag[9]+flag[28]+flag[8]-flag[16]-flag[10]-flag[14]+flag[34]+flag[35]-flag[11])
s.add(-513==flag[11]-flag[23]-flag[9]-flag[19]+flag[17]+flag[38]-flag[36]-flag[22]-flag[10]+flag[27]-flag[14]-flag[4]+flag[5]+flag[31]+flag[2]+flag[0]-flag[16]-flag[8]-flag[28]+flag[3]+flag[40]+flag[25]-flag[33]+flag[13]-flag[32]-flag[35]+flag[26]-flag[20]-flag[41]-flag[30]-flag[12]-flag[7]+flag[37]-flag[39]+flag[15]+flag[18]-flag[29]-flag[21])
s.add(-502==flag[32]+flag[19]+flag[4]-flag[13]-flag[17]-flag[30]+flag[5]-flag[33]-flag[37]-flag[15]-flag[18]+flag[7]+flag[25]-flag[14]+flag[35]+flag[40]+flag[16]+flag[1]+flag[2]+flag[26]-flag[3]-flag[39]-flag[22]+flag[23]-flag[36]-flag[27]-flag[9]+flag[6]-flag[41]-flag[0]-flag[31]-flag[20]+flag[12]-flag[8]+flag[29]-flag[11]-flag[34]+flag[21])
s.add(853==flag[30]-flag[31]-flag[36]+flag[3]+flag[9]-flag[40]-flag[33]+flag[25]+flag[39]-flag[26]+flag[23]-flag[0]-flag[29]-flag[32]-flag[4]+flag[37]+flag[28]+flag[21]+flag[17]+flag[2]+flag[24]+flag[6]+flag[5]+flag[8]+flag[16]+flag[27]+flag[19]+flag[12]+flag[20]+flag[41]-flag[22]+flag[15]-flag[11]+flag[34]-flag[18]-flag[38]+flag[1]-flag[14])
s.add(-28==flag[38]-flag[10]+flag[16]+flag[8]+flag[21]-flag[25]+flag[36]-flag[30]+flag[31]-flag[3]+flag[5]-flag[15]+flag[23]-flag[28]+flag[7]+flag[12]-flag[29]+flag[22]-flag[0]-flag[37]-flag[14]-flag[11]+flag[32]+flag[33]-flag[9]+flag[39]+flag[41]-flag[19]-flag[1]+flag[18]-flag[4]-flag[6]+flag[13]+flag[20]-flag[2]-flag[35]-flag[26]+flag[27])
s.add(-529==flag[11]+flag[18]-flag[26]+flag[15]-flag[14]-flag[33]+flag[7]-flag[23]-flag[25]+flag[0]-flag[6]-flag[21]-flag[16]+flag[17]-flag[19]-flag[28]-flag[38]-flag[37]+flag[9]+flag[20]-flag[8]-flag[3]+flag[22]-flag[35]-flag[10]-flag[31]-flag[2]+flag[41]-flag[1]-flag[4]+flag[24]-flag[34]+flag[39]+flag[40]+flag[32]-flag[5]+flag[36]-flag[27])
s.add(-12==flag[38]+flag[8]+flag[36]+flag[35]-flag[23]-flag[34]+flag[13]-flag[4]-flag[27]-flag[24]+flag[26]+flag[31]-flag[30]-flag[5]-flag[40]+flag[28]-flag[11]-flag[2]-flag[39]+flag[15]+flag[10]-flag[17]+flag[3]+flag[19]+flag[22]+flag[33]+flag[0]+flag[37]+flag[16]-flag[9]-flag[32]+flag[25]-flag[21]-flag[12]+flag[6]-flag[41]+flag[20]-flag[18])
s.add(81==flag[6]-flag[30]-flag[20]-flag[27]-flag[14]-flag[39]+flag[41]-flag[33]-flag[0]+flag[25]-flag[32]-flag[3]+flag[26]-flag[12]+flag[8]-flag[35]-flag[24]+flag[15]+flag[9]-flag[4]+flag[13]+flag[36]+flag[34]+flag[1]-flag[28]-flag[21]+flag[18]+flag[23]+flag[29]-flag[10]-flag[38]+flag[22]+flag[37]+flag[5]+flag[19]+flag[7]+flag[16]-flag[31])
if s.check()==sat:
    print(s.model())
'''
flag[8] = 48
flag[3] = 103
flag[1] = 108
flag[15] = 71
flag[16] = 95
flag[11] = 95
flag[18] = 113
flag[9] = 110
flag[6] = 95
flag[30] = 52
flag[14] = 78
flag[0] = 102
flag[25] = 95
flag[28] = 95
flag[19] = 85
flag[40] = 51
flag[23] = 48
flag[21] = 84
flag[41] = 125
flag[7] = 108
flag[17] = 101
flag[4] = 123
flag[33] = 95
flag[35] = 49
flag[36] = 84
flag[38] = 95
flag[13] = 48
flag[32] = 121
flag[31] = 83
flag[34] = 87
flag[27] = 115
flag[10] = 103
flag[2] = 97
flag[37] = 104
flag[5] = 65
flag[20] = 52
flag[29] = 69
flag[12] = 49
flag[24] = 110
flag[26] = 49
flag[22] = 105
flag[39] = 122
'''

方程組的解轉為字串即為flag
equation-flag

[安洵杯 2019]crackMe

exe程式,運行后提示輸入flag,輸入后回車,彈窗“hooked”,輸入錯誤列印wrong,無殼,ida分析
main函式,讀取輸入,和sub_411136函式
crackme-main
sub_411136->sub_4132E0,比較Str1和Str2
crackme-sub_4132E0
交叉參考Str2來到sub_412C30函式,對Str2進行變換,對byte_41A180進行變表base64,存盤到Str1,再呼叫sub_411136函式比較Str1和Str2
crackme-sub_412C30
先分析sub_41126C函式的變表base64,補充的“=”換成“!”,且在從base64表中取值時,下標加了24,相當于原base64表整體左移24位
crackme-sub_41126C
再交叉參考BASE64_table_41A080,來到sub_412AB0函式,還是對base64表的變換,實際上是大小寫轉換,于是這時的base64表變成了yzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/abcdefghijklmnopqrstuvwx
crackme-sub_412AB0
看到了exe程式運行時彈出的“hooked”
Handler->Handler_0
發現了SM4的系統引數fk,0xA3B1BAC6,于是確定加密演算法位SM4,密鑰為v2到v17的字串,“where_are_u_now?”
(SM4加密演算法在逆向中的一點特征:系統引數fk固定 0xA3B1BAC6, 0x56AA3350, 0x677D9197, 0xB27022DC)
crackme-handler_0
TopLevelExceptionFilter->sub_412C30,回到了上面分析過的函式
于是,該程式的主要邏輯為
對輸入進行SM4加密,密鑰為“where_are_u_now?”
對SM4的密文進行變表base64
base64編碼后的字串與已知字串比較,已知字串也有變換
寫逆腳本即可得到flag

#coding:utf-8
import base64
from pysm4 import decrypt,encrypt
from Crypto.Util.number import bytes_to_long,long_to_bytes
s="1UTAOIkpyOSWGv/mOYFY4R!!" #原已知字串
arr=[]
for c in s:
    arr.append(ord(c))
for i in range(0,len(arr),2):   #已知字串分組交換
    arr[i],arr[i+1]=arr[i+1],arr[i]
str_in_base_changed=""
for i in range(len(arr)):
    str_in_base_changed+=chr(arr[i]) #已知字串分組交換的結果,也是密文經變表base64的結果
base="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" #常規base64表
base_changed="yzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/abcdefghijklmnopqrstuvwx" #base64變表
str_in_base="" #常規base64的結果
for i in range(0,len(str_in_base_changed)-2): #將變表base64字串映射到常規base64字串,最后兩個先不映射
    str_in_base+=base[base_changed.find(str_in_base_changed[i])]
str_in_base+="=="    #補充最后兩個“=”
key=bytes_to_long("where_are_u_now?") #密鑰,字串轉成整形
cipher=bytes_to_long(base64.b64decode(str_in_base))#解常規base64字串,作為密文,字串轉為整形
print(long_to_bytes(decrypt(cipher,key)))#輸出明文
#SM4foRExcepioN?!

[FlareOn5]Minesweeper Championship Registration

.jar檔案,jadx-gui打開,來到main方法即可看到flag
MCR-flag

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259413.html

標籤:其他

上一篇:排序演算法:快速排序——C/C++

下一篇:mysql必知必會

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more