题目:BUUCTF Reverse xor
一些犯傻后学到了新东西的记录
查壳,没壳,IDA打开
main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定flag正确
找global
在strings window直接复制得到的字符串长度为32,且有警告
在网上搜了发现,这是因为用\x表示16进制数时,会将后三位都一起转义
比如global中有\x11p
,会将11p都转义,这样可能超出范围,也不是本来的数据了
解决办法可以把字符串拆开再拼接
于是我对着这个图,一位一位对,把转义两位的地方都拆开,拆成了好几个部分
最后代码是这样的
得到flag:
flag{QianQiuWanDai_YiTongJiangHu}
之后我去搜题解,发现可以导出数据,方便得很
选中global那一块,按Shift + E
这题就选导出为无符号字符数组(16进制)
方便得很啊啊啊!!还是要学习