标签:不能 指针 get log length ret signed main 模拟
col.c代码如下:
|
|
观察代码,可知代码逻辑过程是:
1.先输入一个不少于20字节长度的值
2.对输入的前五位整数求和(int类型,一个int等于4字节,5位int类型,恰好20字节)
3.求得的和与0x21DD09EC比较,若相等则通过
重点1:
|
|
这里将输入的char类型的指针强制转换为了int指针,从而ip指针一次能够指向4个字节大小的内存区域。画个图模拟一下内存布局:
思路1:将0x21DD09EC除以5变为4字节为一组,分别输入,最后以4字节为一组进行求和即可。
比如:
|
|
哦,稍等。好像不能被5整除哦。换个方式:4 x 0x01010101 + 0x1dd905e8
|
|
接下我们把刚刚的值输入:
|
|
YES,GET FLAG!
标签:不能 指针 get log length ret signed main 模拟
原文地址:https://www.cnblogs.com/wangziqiang123/p/11712238.html