170718 pwn-pwn0

1625-5 王子昂 总结《2017年7月18日》 【连续第289天总结】
A. pwn入门
B. pwn0:
用binwalk查看一下,发现是32位ELF文件,则回到物理机中用IDA查看
首先当然从main函数入手:
170718 pwn-pwn0
可以看到前面都是申请内存,输出提示,然后就进入了foo函数,那么接着查看:
170718 pwn-pwn0
gets得到输入,重复输出以后校验a1,a1是参数,来自于main函数中赋值的305419896
因此正常情况下是不可能通过判断的
getFlag函数命名就很明显,验证查看一下:
170718 pwn-pwn0
打开文件目录下的flag文件输出,即得到flag
那么问题就在于如何通过if的判断了
这里回到汇编状态看看foo会更好:
170718 pwn-pwn0
要想让a1即[ebp+arg_0]的位置为61616161h,即’aaaa’
只需要让ebp+s的位置覆盖到a1即可
即输入’a’*(0x1c+4+4+4)即可
数字含义分别为:
  0x1c:s即输入参数的位置
  4:ebp的长度
  4:ret的长度
  4:a1所需要的值,即61616161h
本题中通过修改a1的值可以通过判断,从而调用getFlag函数;还可以通过覆盖ret的值来达到调用getFlag的目的;明天再说~
C. 明日计划
pwn入门(二)