Pwnable.kr的第二道题目collision的writeup
首先连接题目,可以看到当前目录下有三个文件:
查看col.c文件,可以看到col的程序逻辑:
1 |
|
可以看到,程序将第一个参数经过变换与hashcode作比较,若相同则获得flag,并且参数必须为20个字节。在check_password()中,函数将输入由字符串转换为整型,因为char是1个字节,int为4个字节,因此原本20个字节的字符串就转换成了地址连续的5个整型变量,经过for循环将这5个变量进行累加,要求最终得到的值与0x21DD09EC相同。
经过尝试,发现当前目录下无法执行脚本程序,但发现服务器安装了python,因此可以直接在命令行里写攻击脚本,只需构造5个和为0x21DD09EC的整型数即可,最终得到flag:
这里使用了python的subprocess模块中的call方法来运行一个外部程序(./col)。