Day35 

 

前女友(SKCTF)

flag格式:SKCTF{xxxxxxxxxxxxxxxxxx}
 
 
本题要点:strcmp()、md5 collision
 
 
 
 
满满的套路啊~
 
链接打开后,发现一段代码
 
 
 
读一下代码,我们看到strcmp()这个函数
这个函数是用于比较字符串的函数
 
int strcmp ( string $str1 , string $str2 )
参数 str1第一个字符串。str2第二个字符串。
如果 str1 小于 str2 返回 < 0;
如果 str1 大于 str2 返回 > 0;
如果两者相等,返回 0。
 
 
 
回看这段代码
我们可以看到 是以GET形式传递3个值,其中v1变量值 != v2变量值,if中的第二个判断条件用的是 ==,我们可以利用 “0x” == "0a"的判断结果为1,找出经过加密后的两个md5值以0开头,接下去以都相同的值,直到遇到的字母的两个字符串相等 v3 == flag
 
那么
 
方法一:
 
我们可以通过
PHP处理0e开头md5时hash字符串漏洞   详细请看
 
https://www.cnblogs.com/0yst3r-2046/p/10748412.html    (md5 collision之记录一些MD5值)
 
构造 index.php?v1[]=QLTHNDT&v2[]=UTIPEZQ&v3[]=EEIZDOI
 
得到答案:
SKCTF{Php_1s_tH3_B3St_L4NgUag3}
 
 
方法二:
 
在PHP中
MD5是不能处理数组的,md5(数组)会返回null
所以即
md5(a[])==null,md5(b[])==null,md5(a[])=md5(b[])=null也可以满足代码中的条件
 
构造: index.php?v1[]=1&v2[]=2&v3[]=3
 
 
 
 
 
 
完成!
 
 
 
 
 
 
 
 
 
 
参考资料:
 
 
 
 
 
 
 

最新文章

  1. java编译错误 程序包javax.servlet不存在javax.servlet.*
  2. phpstorm的调试工具xdebug
  3. Python笔记本
  4. [shiro] Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
  5. android 安装应用程序apk安装不了
  6. .hpp文件
  7. NData BUG 记录
  8. 《Python核心编程》 第六章 序列 - 课后习题
  9. MySQL之最基本命令
  10. 将childNodes返回的数据转化维数组的方法
  11. backupMysql.sh
  12. JVM内部原理
  13. 谈谈spring的缓存
  14. [转]关于python中带下划线的变量和函数的意义
  15. nginx日志格式定义和nginx.conf配置模板说明
  16. (Zero XOR Subset)-less-线性基
  17. Msf的一些常用操作
  18. [archlinux][daily] 自建DNS服务器 / 建立本地DNS cache / 使用dnsmasq加速上网
  19. C#中的String类2
  20. Perl语言入门

热门文章

  1. 文件分配表(FAT)及其结构
  2. mac /windows
  3. 爬虫爱用的一些python技巧
  4. window10安装nginx及请求转发到tomcat服务器访问项目及开机自启
  5. Nessus安装出现localhost:8834无法访问
  6. SQLServer导出查询结果带表头(标题行)
  7. zabbix4.2配置监控TCP连接状态
  8. Laravel-admin 刷新页面后,左侧菜单栏怎么默认选中当前栏目
  9. python 3.8 下安装 tensorflow 1.14
  10. Python生成通用唯一识别码UUID