当前位置: 首页 > news >正文

怎样去查网站备案号html 新手入门

怎样去查网站备案号,html 新手入门,软装设计培训一般多少钱,专业的上海网站建设公司哪家好免责声明#xff1a;本文章仅用于交流学习#xff0c;因文章内容而产生的任何违法未授权行为#xff0c;与文章作者无关#xff01;#xff01;#xff01; 附#xff1a;完整笔记目录~ ps#xff1a;本人小白#xff0c;笔记均在个人理解基础上整理#xff0c;…免责声明本文章仅用于交流学习因文章内容而产生的任何违法未授权行为与文章作者无关 附完整笔记目录~ ps本人小白笔记均在个人理解基础上整理若有错误欢迎指正 1.3 松散比较PHP 引子本章主要介绍一些由PHP自身语言特性可能产生的脆弱性该内容往往被应用于PHP CTF入门题中但在PHP Web开发时也可能被使用。 是php中的比较运算符用于判断 左右两边的值是否相等。若两边的值类型不同则会优先将两边的值类型转换为同一类型后再进行比较也称这种比较方式为松散比较。 这其中使用最多也是最容易产生误解的就是数字、数字字符串、字符串之间的比较。这里给出官方规则 If both operands are numeric strings, or one operand is a number and the other one is a numeric string, then the comparison is done numerically. These rules also apply to the switch statement. 简单来说就是当数字与数字字符串或者数字字符串与数字字符串之间进行比较时都会被转换为数字后再比较这些规则同样适用于switch。有没有感觉官方给出的内容有些含糊呢这里举几个例子 // 在松散比较中以下格式的字符串会被转换为什么数字呢如 sjjjer 1999sj 1999e9r 1999.9er我们分别来测试一下 ?php $data1 sjjjer; $data2 0; echo $data1 $data2 ? true : false; // true -- php版本为7.3 // false -- php版本为8.2 // 从官方给出的解释来看在php8版本前字符串默认被转换为数字0参与比较8版本后被修复$data1 1999sj19; $data2 1999; echo $data1 $data2 ? true : false; // true // 可以看到当字符串中同时出现字母与数字时且数字在前 // 则在比较时会默认将字符串转换为出现第一个字母前的数字$data1 1999e9r; $data2 1999; echo $data1 $data2 ? true : false; // false // 为什么此时松散比较结果为false呢 // 是由于1999e9在转换为数字参与比较时其实际值为1999 * 10^9e是科学计数法的标识。 // So 我们可以修改1999的值为1999000000000再尝试比较 $data3 1999000000000; echo $data3 $data1 ? true : false; // true$data1 1999.9er; $data2 1999; echo $data1 $data2 ? true : false; // false // 由于在比较时会将字符串转换为出现第一个字母前的数字 // 也就是 1999.9er -- 1999.9 浮点数 // 当我们修改1999为1999.9时再参与比较 $data3 1999.9; echo $data1 $data3 ? true : false; // trueswitch() 上述所提松散比较时的类型转换规则同样适用于switch分支结构也就说明php中switch结构在进行数据比较时也采用松散比较这里来测试一下。 demo ?php echo 请输入数据; $data1 fgets(STDIN); // 由于fgets()从键盘获取到的数据默认携带 \n // 因此需使用trim()去除 $data1 trim($data1); switch ($data1) {case 0:echo 0;break;case 19:echo 19;break;case sj:echo sj;break;default:echo 数据未成功匹配; }// fgets()为获取用户所输入数据默认返回值类型为字符串 // 也就是说data1的数据类型为字符串 // next 进入switch分支结构 // 该分支结构实质为字符串与数字、字符串与字符串的松散比较/*请输入数据sj -- php版本7.3 0 请输入数据19er 19 请输入数据sj -- php版本8.2 sj*/md5() 已知md5加密后会生成固定32位字符串。而在php的身份验证中常常会存在这样的逻辑获取用户输入密码并将其转换为md5值随后再与数据库所存储用户密码比较数据库中用户密码往往加密存储若相等则成功验证身份。 若开发者所使用比较运算符为 也就是本文所提松散比较则可能会出现以下情况 用户密码经md5加密后的结果为0e656002536496242128899000718690。由上文可知 e 为科学计数法的标识因此在php中0e656002536496242128899000718690 为一串数字字符串。且使用 进行松散比较。由php松散比较规则可知当数字串与数字串比较时会被转换为数字进行比较。而0e后无论跟什么其结果均为0因此仅需再寻找另一个字符串使其满足经md5加密后的结果为0e开头的数字字符串就能实现即使所输入密码与用户原码密码不一致但经md5加密后再进行松散比较返回结果为true。 我们来验证一下 ?php echo 请输入您的密码; $input trim(fgets(STDIN)); $password md5(000dSb96); if (md5($input) $password) {echo 恭喜您密码输入正确; } else {echo Sorry您的密码有误; }// 请输入您的密码001st0X5 // 恭喜您密码输入正确若想获取更多满足要求的字符串可以写个脚本慢慢跑这里给出我自己的脚本 import hashlib import itertools import string# 定义函数生成所有可能的8-16位字符串 def generate_strings():# 所有可用的字符数字和字母chars string.digits string.ascii_lowercase string.ascii_uppercase# 生成长度从8到16的字符串for length in range(8, 17):# 生成当前长度的所有可能字符串for s in itertools.product(chars, repeatlength):yield .join(s)# 定义函数检查MD5值是否以0e开头且后续为数字 def check_md5(md5_hash):# 判断MD5值是否以0e开头且后续部分全为数字return md5_hash.startswith(0e) and md5_hash[2:].isdigit()# 主程序 def main():# 打开result.txt文件以写入结果with open(result.txt, w) as result_file:# 符合条件的字符串数量found_count 0# 遍历生成的所有字符串for s in generate_strings():# 对字符串进行MD5加密md5_hash hashlib.md5(s.encode(utf-8)).hexdigest()# 检查MD5是否满足条件if check_md5(md5_hash):# 打印符合条件的字符串和MD5值print(f{s} {md5_hash})# 写入到文件中result_file.write(f{s} {md5_hash}\n)found_count 1# 如果已经找到了10个符合条件的字符串停止执行if found_count 10:breakif __name__ __main__:main()10分钟就跑出来了五条看来还有很大的优化空间。。。 # 结果展示 000dSb96 0e656002536496242128899000718690 001st0X5 0e632311920444249596217934156166 001uTksg 0e012344733002178183175029976663 001yLWsp 0e561475551818519587284167859133 001CKN1u 0e364973363767512736620399322212 0029F2eL 0e819654840882947331243228254063 002zDdF8 0e693440086514416381258215413583 0031LEiY 0e050990879989909849271876008654 003kjZ6a 0e813458376037199230741560480845 003mHOrg 0e186417107900720544959665557875要是懒得用脚本跑也可以参考https://blog.csdn.net/baidu_41871794/article/details/83750615这篇博文作者也给了一些例子。 strcmp() php中的字符串比较函数strcmp($str1, $str2)会逐个字符比较字符串str1str2的ASCII值若str1 str2 则返回值0若str1 str2 则返回值0若 str1 str2 返回值为0。 而在php 8版本之前若所比较值类型为非字符串时此时strcmp()函数报错且return 0也就是说虽然strcmp()所接收参数不为字符串类型但最终仍判断其字符串值相同。 demo ?php $str1 sjjjer; $str2 $_GET[str]; if (strcmp($str1, $str2) 0) {echo 两字符串相等; } else {echo 两字符串不等; }// url: http://192.168.2.106:81/simplectf/SimplectfDemo4.php?str[]sj // Warning: strcmp() expects parameter 2 to be string, array given in SimplectfDemo4.php on line 4 // 两字符串相等可以看到虽然报错但仍执行了两字符串相等的逻辑。测试版本为php 7.3.4php 8版本后修复。 in_array() array_search() in_array()用于查找指定值是否在数组中返回truefalse。array_search()用于查找指定值的键索引若找到返回索引值若未找到返回false。同样的这两个数组查找函数若未指定其第三个值为true默认为false则采用松散比较。 demo ?php $arr [0, 19, sj]; var_dump(in_array(sjjjer, $arr)); var_dump(array_search(sj, $arr)); var_dump(array_search(sj, $arr, true));// bool(true) // int(0) // int(2)bool比较 上文案例所产生的有趣结果主要基于数字、数字字符串、字符串之间的松散比较规则而成。 而接下来则对bool值与字符串的比较规则做一介绍 ture 与 字符串比较结果为true这里的字符串指数字字符串“19”字符串(“sj”)。而false 与 字符串的比较结果为false这里的字符串类型同true。true 与 空字符串比较结果为false这里的空字符串指“”“0”。相反的false 与 空字符串的比较结果为true。 注这里的比较均为 若想了解其余类型数据的比较结构可参考官方比较表https://www.php.net/manual/en/types.comparisons.php demo ?php // 这里以json_decode() 与 unserialize()函数为例 $str {username: true, password: true}; $data json_decode($str); var_dump($data-username); if ($data-username admin $data-password sjjjer) {echo 身份认证成功; } else {echo 身份认证失败; }// bool(true) // 身份认证成功 // true与字符串松散比较结果为true。// 正确值为$str a:2:{s:8:username;s:5:admin;s:8:password;s:6:sjjjer;}; $str a:2:{s:8:username;b:1;s:8:password;b:1;}; // 其中b表示bool类型1为true $data unserialize($str); if ($data[username] admin $data[password] sjjjer) {echo 身份认证成功; } else {echo 身份认证失败; }// 身份认证成功以上内容均为开发者采用php松散比较时可能产生的结果那有没有更为严谨的比较方式呢采用比较在比较时会先比较两边值类型再比较值若两边值类型不同也会返回false也称这种比较方式为严格比较。 demo ?php $data1 sj; $data2 0; var_dump($data1 $data2);// bool(false)实验 好了你现在已经大致了解php的松散比较规则以及使用松散比较可能会产生的问题了。接下来做几道ctf入门题吧 第一题 ?php $num $_GET[num]; // 判断$num的值是否为数字或数字字符串 if (!is_numeric($num)) {echo $num;if ($num 1) {echo flag!;} }答案 http://192.168.2.106:81/simplectf/SimplectfDemo8.php?num1sj第二题 ?php $md51 md5(QNKCDZO); $a $_GET[a]; $md52 md5($a); // 判断$a是否有值且值不为NULL if (isset($a)) {if ($a ! QNKCDZO $md51 $md52) {echo flag;} else {echo false!!!;} } else {echo please input a; }答案 http://192.168.2.106:81/simplectf/SimplectfDemo9.php?a000dSb96至此本章内容结束
http://www.hkea.cn/news/14303882/

相关文章:

  • 网站建设自助建站云建站网站开发的教学课程
  • 什么叫网站名称彩票网站建设古大学
  • 一级域名建站网站建设行吗专业团队张伟原图
  • 大埔县住房城乡规划建设局网站大数据营销的特点有哪些
  • 盐城网站建设制作方案腾讯云wordpress密码
  • 海淀做网站的公司ASP net网站开发资料
  • 海口cms建站系统网站自动推广软件
  • 鄂尔多斯网站制作 建设推广头像模板在线制作软件
  • 做网站被坑能找司法吗电商网站开发费用
  • 网站收录查询入口ps网站导航制作
  • 信息平台网站建设装修公司展厅工艺样板
  • 哈尔滨网站小程序制作营销通
  • 网站建设培训班价格商品定制首页
  • 网站域名注册申请上海建筑设计院停工停产通知
  • 智慧团建网站入口官网品牌建设营销
  • 张家港市住房城乡建设局网站国外可以做非法网站吗
  • 做平面素材好的网站东莞网站建设推广费用
  • 做进化树的网站电工应用技术网站资源建设
  • 增长超人做网站多少钱网站如何做微信支付宝支付宝
  • 很长的网站域名怎么做短给素材网站做签约设计不想做了
  • 口碑好的做网站网站建设服务8
  • 关于做书的网站二手交易网站设计怎么做
  • 网站构建工具怎么做网站演示
  • python做网站稳定吗深圳 网站设计公司排名
  • 北京网站搭建多少钱权威发布是什么意思
  • 采集网站如何收录新手网站建设教程
  • 网站小程序开发公司北京建设网网站
  • 七米网站开发移动端网站建站视频
  • 教育网站开发用例图seo这个行业怎么样
  • 服饰网站建设模板企业建设网站怎么做账