美文网首页
CSAPP——bomblab拆弹实验2记录

CSAPP——bomblab拆弹实验2记录

作者: doctordc | 来源:发表于2020-05-12 01:34 被阅读0次

    这第2个拆弹过程有点上头了,思路不太好,不过在此记录一下过程。

    老样子gdb list出来后先看看phase_2的汇编代码

    看到read_six_numbers,我想到的是一个寄存器读取了一个6位的数字进行比较,那就不说了先试试一个六位数的

    结果一通乱试没一个reg有特殊数字的

    说明想的不对,那就搞个断点看看这个函数是啥

    打个断点一看寄存器里面,有6个%d,这是c语言的占位符,结合名字感觉像是要6个数字。不过我还是想试试是不是就只是这个字符串"%d %d %d %d %d %d",试试

    证明我想多了,果然不是

    那就是6个数字,先来一串简单的试试

    用111 222 333 444 555 666这种到时候一眼就能看出来的值,继续断点进去看

    看到这个cmpl $0x1,(%rsp) ,然后我查看了一下我这里的值是不是1

    哦是我输入的第一个值

    那接下来就是booooom了。既然这样,那我就把数字改成1 2 3 4 5 6 试试

    走了几步发现好像一直能过,于是直接continue一下,发现boom了,于是回头继续找问题。看了下,2是可以过的

    2能过

    然后我这里没太多想就一直ni了下去,突然发现了rax变成4了

    其实就在这几步里一直loop,但我没有去分析这个loop逻辑。要是早点分析一下应该会早点pass。不过这都是马后炮了。

    看到这个4,我以为是我123过了,跳到了第四个数4这里,于是一看($rbx)

    居然是3,那我寻思这数字就是1 2 3 3 x x ?

    立马一拍大腿,这种有规律的肯定就是1 2 3 3 2 1啊,肯定!

    然后boooom。

    这就纳闷了,确定了1 2 3 3,后面先继续用5 6去调试看看情况吧

    然后一步步走,走到这出来个4,我才发现好像不对劲

    我输入应该没有4才对,那说明这个4是true answer,我前面的推断有误。检查了一下前面的思路,发现应该不是1 2 3过了,应该是1 2 过了,第三个数是4,才对。

    既然是1 2 4 ,又有规律,立马想到等比数列,试试!

    这次一步步继续往下,走到4过了,8出现也过了,我就基本确定是这样了

    结果没错,就是等比数列。

    虽然这个汇编代码没太分析明白,不过还是去对应找出了相关知识点再去看看学习。

    拆弹2实验就到这了。

    相关文章

      网友评论

          本文标题:CSAPP——bomblab拆弹实验2记录

          本文链接:https://www.haomeiwen.com/subject/tpgmnhtx.html