REVERSE-PRACTICE-BUUCTF-16

REVERSE-PRACTICE-BUUCTF-16

    • [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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438160.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IPC之命名管道

1.管道是通过IO接口存取得字节流, windows中利用得是ReadFile()和WriteFile(),windows利用单一句柄支持双向IO,命名管道也称做FIFO(first in first out) 命名管道得机制:一个进程把数据放到管道里,另一个知道管道名字得进程把数据把取走&…

REVERSE-PRACTICE-BUUCTF-17

REVERSE-PRACTICE-BUUCTF-17[网鼎杯 2020 青龙组]jocker[2019红帽杯]childRE[MRCTF2020]PixelShooter[ACTF新生赛2020]SoulLike[网鼎杯 2020 青龙组]jocker exe程序,运行后提示输入flag,无壳,用ida分析 main函数平衡栈后,F5反汇编…

Excluding Files From Team Foundation Version Control Using .tfignore Files

At one point I was coding on a hobby project, using Visual Studio Online for project management and source control. Because of the technologies involved, a large number of temporary files were being generated that I didn’t want checked in. Visual Studio’…

REVERSE-PRACTICE-BUUCTF-18

REVERSE-PRACTICE-BUUCTF-18[SWPU2019]ReverseMe[FlareOn1]Bob Doge[FlareOn5]Ultimate Minesweeper[GKCTF2020]Chellys identity[SWPU2019]ReverseMe exe程序,运行后提示输入flag,输入错误打印“Try again”,无壳,ida分析 交叉引…

VS2008中Web Reference和Service Reference的区别

很早就发现在vs2008中应用web service有两种方式,即Add Web Reference和Add Service Reference,但是一直不是很清楚这两者有什么区别。趁着今天有空实验一下这两者的区别并记录下来供大家参考。 首先在网上查找,发现有如下两个主要区别&#…

REVERSE-PRACTICE-BUUCTF-19

REVERSE-PRACTICE-BUUCTF-19[RoarCTF2019]polyre[安洵杯 2019]game[SCTF2019]Strange apk[CFI-CTF 2018]IntroToPE[RoarCTF2019]polyre elf文件,无壳,用ida分析 main函数的结构,多重循环,是控制流平坦化,参考&#xf…

REVERSE-PRACTICE-BUUCTF-20

REVERSE-PRACTICE-BUUCTF-20[SCTF2019]creakme[网鼎杯 2020 青龙组]bang[WUSTCTF2020]funnyreDig the way[SCTF2019]creakme exe程序,运行后提示输入ticket,无壳,用ida分析 交叉引用字符串“please input your ticket:”来到sub_402540函数 …

Web Reference和Service Reference的区别

今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下: 项目根目录——引用——右键——添加服务引用——高级——添加Web引用——输入接口的URL地址——回车(下方出现的就是接口的定义的方法)——修改Web引…

REVERSE-PRACTICE-BUUCTF-21

REVERSE-PRACTICE-BUUCTF-21[SCTF2019]babyre[MRCTF2020]EasyCpp[GUET-CTF2019]encrypt[QCTF2018]Xman-babymips[SCTF2019]babyre elf文件,无壳,用ida分析 在start函数中看到main函数的字样,但是左侧函数窗没有找到main函数 原因是main函数中…

原型设计工具——“墨刀”的介绍与基本教程

一、产品介绍 (1)产品简介: 墨刀是一款在线原型设计与协同工具,借助墨刀,产品经理、设计师、开发、销售、运营及创业者等用户群体,能够搭建为产品原型,演示项目效果。 (2&#xf…

MockPlus原型设计介绍

在第八周的课堂上,王文娟老师在校园系统上发布了对于自行选择的原型设计软件进行资料查找以及自学的任务。因为之前的课程学习需要,我们已经大概掌握了原型设计软件Axure的使用,因此在这里,我选择了另一原型设计进行介绍&#xff…

REVERSE-PRACTICE-BUUCTF-22

REVERSE-PRACTICE-BUUCTF-22[SCTF2019]Who is he[FlareOn2]very_success[NPUCTF2020]Baby Obfuscation[HDCTF2019]MFC[SCTF2019]Who is he unity游戏,运行后输入,点击按钮检验输入 dnSpy打开Who is he\Who is he_Data\Managed\Assembly-CSharp.dll 在Te…

浅谈常见的NoSQL技术方案和选型

前言 在互联网和大数据的背景下,越来越多的网站、应用系统需要支撑 海量数据存储、高并发请求、高可用、高可扩展性 等特性要求。传统的 关系型数据库 已经难以应对类似的需求,各种各样的 NoSQL(Not Only SQL)数据库因此而产生。…

REVERSE-PRACTICE-BUUCTF-23

REVERSE-PRACTICE-BUUCTF-23[2019红帽杯]Snake[BSidesSF2019]blink[De1CTF2019]Re_Sign[ACTF新生赛2020]Splendid_MineCraft[2019红帽杯]Snake unity游戏,dnSpy打开Snake\Snake_Data\Managed\Assembly-CSharp.dll 发现要载入Interface这个dll ida打开Snake\Snake_…

REVERSE-PRACTICE-BUUCTF-24

REVERSE-PRACTICE-BUUCTF-24[watevrCTF 2019]Timeout[SUCTF2019]hardcpp[CISCN2018]2ex[UTCTF2020]babymips[watevrCTF 2019]Timeout elf文件,无壳,ida分析 main函数中signal,alarm,delay三个函数配合使用是为了反调试 交叉引用…

REVERSE-PRACTICE-BUUCTF-25

REVERSE-PRACTICE-BUUCTF-25特殊的 BASE64[FlareOn1]Javascrap[WMCTF2020]easy_re[NPUCTF2020]BasicASM特殊的 BASE64 exe程序,运行后输入,无壳,ida分析 main函数,读取输入,进行变表base64编码,与rightFla…

REVERSE-PRACTICE-BUUCTF-26

REVERSE-PRACTICE-BUUCTF-26[FlareOn6]FlareBear[SUCTF2018]babyre[GKCTF2020]WannaReverse[FlareOn4]greek_to_me[FlareOn6]FlareBear apk文件,模拟器上运行,创建一个小熊,有三种方式交互,分别为“吃饭”,“篮球”以…

C#的变迁史02 - C# 2.0篇

在此重申一下,本文仅代表个人观点,如有不妥之处,还请自己辨别。 第一代的值类型装箱与拆箱的效率极其低下,特别是在集合中的表现,所以第二代C#重点解决了装箱的问题,加入了泛型。1. 泛型 - 珍惜生命&#x…

REVERSE-PRACTICE-BUUCTF-27

REVERSE-PRACTICE-BUUCTF-27[XMAN2018排位赛]Dragon Quest[羊城杯 2020]easyre[watevrCTF 2019]Repyc[2019红帽杯]calc[XMAN2018排位赛]Dragon Quest elf文件,无壳,ida分析 main函数,读取输入,start_quest函数验证输入&#xff0…

C#的变迁史03 - C# 3.0篇

C# 3.0 (.NET 3.5, VS2008) 第三代C#在语法元素基本完备的基础上提供了全新的开发工具和集合数据查询方式,极大的方便了开发。 1. WPF,WCF,WF 这3个工程类型奠定了新一代.NET开发的客户端模型,通信模型,工作流模型。 …