一些犯傻后学到了新东西的记录
查壳,没壳,IDA打开
main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定flag正确
找global

在strings window直接复制得到的字符串长度为32,且有警告

在网上搜了发现,这是因为用\x表示16进制数时,会将后三位都一起转义
比如global中有\x11p,会将11p都转义,这样可能超出范围,也不是本来的数据了
解决办法可以把字符串拆开再拼接
于是我对着这个图,一位一位对,把转义两位的地方都拆开,拆成了好几个部分

最后代码是这样的
得到flag:flag{QianQiuWanDai_YiTongJiangHu}
之后我去搜题解,发现可以导出数据,方便得很
选中global那一块,按Shift + E
这题就选导出为无符号字符数组(16进制)

方便得很啊啊啊!!还是要学习
文章讲述了作者在解决BUUCTF中的Reversexor问题时的经历,通过分析程序逻辑,发现输入字符串需满足特定异或条件与全局变量global匹配。由于字符串转义问题导致初始观察到的字符串不正确。作者通过拆分和重组字符串解决了这个问题,并学习到可以从IDA中导出数据为无符号字符数组,简化处理过程,最终得到flag。
1491

被折叠的 条评论
为什么被折叠?



