noob12345 发表于 2022-10-21 09:34

bugku call关于数字藏在程序中的问题

新人第一次发帖,如果有什么说的不对的地方烦请大佬纠正。
题目描述:点击不同的按钮,将数字显示在界面,点击dail则与程序中的数字比较,正确则弹出flag
丢exeinfope发现无壳

打开exe程序,随便输入假码提示如下这里先直接丢od了,智能搜索能搜到提示可以点进去看看,发现有两处跳转。如果把这两个跳转全nop掉会怎么样?可以发现能弹出flag,但是这flag很明显是错的。。(这里最好奇的就是为什么暴力破解后会弹出这种乱七八糟的东西呢?)这回来到00401F1A这个地方,往上找到函数入口点401D80下个断点击dail程序断下来了,f8往下慢慢走,可以发现401DA6地址push的是flag左边部分,这里得起疑心了,程序中的正确flag会不会可能就在下面呢?很快来到了第一个要跳转的jnz,这里不能跳把他给nop掉继续单步f8往下走,这里还有个发现,在差不多401DE4这个地址往下单步会出现正确数字的一部分(0694303),但是不是全部的正确数字也很疑惑直到走到了401E3E发现右边寄存器的ESI的可疑的ASCII字符,又注意到401E42有个cmp指令,想必就是对比正确数字的指令了输入3250694303,果然验证了猜想正确,flag出现了!我猜想第一个jnz判断很有可能是判断长度的(可以试试输入10个数字然后第一个jnz是跳转未实现的)
那第二个jnz可能是判断数字对不对的。(但是没验证正确这里只是猜想)这里最想提问的就是这个程序是怎么做到把数据放到程序里运行的呢(毕竟od没搜到字符串)?而暴力破解却会弹出乱的flag呢?链接:https://pan.baidu.com/s/15b0VSZUqZtY6MyQm__REoQ?pwd=4x6m


页: [1]
查看完整版本: bugku call关于数字藏在程序中的问题