首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP代码审计要点

所以,如果我们传入的是文件名中包含一个不存在的路径,写入的时候因为会处理掉“../”等相对路径,所以不会出错;判断、删除的时候因为不会处理,所以就会出现“No such file or directory...magic_quotes_gpc影响 sprintf()格式化漏洞(可以吃掉转义后的单引号) printf()和sprintf()函数中可以通过使用%接一个字符来进行padding功能 例如%10s 字符串会默认在左侧填充空格至长度为...parse_url与libcurl对与url的解析差异可能导致ssrf 当url中有多个@符号时,parse_url中获取的host是最后一个@符号后面的host,而libcurl则是获取的第一个@符号之后的...URL $r = parse_url($argv[1]); print_r($r); // check if host ends with google.com if(preg_match(‘/baidu.com...$/‘, $r[‘host’])) { // get page from URL $a = file_get_contents($argv[1]); echo($a); } else { echo “Error

1.5K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP源码分析之parse_url()的2个小trick

    前言: 之前从phithon师傅的代码审计小密圈看到pupiles师傅发过一篇文章,讲了parse_url()的很多小tricks,可惜只是给出了tricks的利用方法,并没有从底层原理上进行分析,正好我最近也在研究...本文测试使用的PHP版本为7.0.30 pupiles师傅的原文链接: http://pupiles.com/%E8%B0%88%E8%B0%88parse_url.html 函数分析: parse_url...#"), 由于字符串s中没有出现字符?和#,因此strcspn()返回s的长度15,e < s + 15,满足条件 114行 goto parse_port; parse_port在第177行: ?...php $url = $_GET['url']; var_dump(parse_url($url)); ? 第二个trick: ? 实测一下: ?...在端口号之后加一个字符就会被当做path解析了,神奇! 继续分析一波: 这个字符串的解析过程和上述基本一致,不同发生在了parse_port中: 在185行时各指针如下: ? ?

    1.2K30

    PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

    了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求。... &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] ) 它返回一个资源类型的结果,需要传入的参数分别是: $hostname...:主机名 $port:端口号 $errno:错误号(注意原型中的"&"一旦连接有错误,错误号将会被赋值给$errno) $errstr:错误字符串(一旦连接有错误,错误信息将会被赋值给$errstr)...$timeout:超时时间 $host=parse_url($url,PHP_URL_HOST);//获取host数据 $port=parse_url($url,PHP_URL_PORT)==null...80 : parse_url($url,PHP_URL_PORT);//获取端口数据,如果没有设置则默认为80 $path=parse_url($url,PHP_URL_PATH);//获取到path

    1.9K80

    SSRF漏洞原理攻击与防御

    如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。...在PHP的parse_url中会识别www.ccc.com,而libcurl则识别为www.bbb.com。 web358 中,得不到想要的结果 5.3 SSRF利用 Gopher 协议拓展攻击面 Web359 随便输一个用户名,进入后台靶场并没有做,使用hackbar工具打开,我们可以看到在登录时前后端传参的方法...基本身份认证的方式绕过,即@http://www.xxx.com@www.xxc.com 2.限制请求IP不为内网地址 当不允许ip为内网地址时:采取短网址绕过、采取特殊域名、采取进制转换 3....限制请求只为http协议 采取302跳转、采取短地址 七、免责声明 本课程及所讲述的所有技术仅能在取得足够合法授权的企业安全建设中使用,在使用学习本课程的过程中,您应确保自己所有行为符合当地的法律法规

    43710

    Perl 工作积累(不定期更新)

    一些特殊字符 3)数据库乱码问题:在脚本中查询的表和插入的表都要设置同样的编码如utf8($db_url->do(set names utf8)), 在secureCRT显示时设置UTF-8,查询数据库显示前...,有种解决办法是只取参数的有些长度字段。...时不用再对$url 加' ', 如果$url 内还有单引号会被转义; sql 执行出错很可能是引号提前闭合的问题 the single/double quotes are are properly escaped...如果字符串中只是存在单一的 \(后面没有跟 ", ', \, n, r, b 等),那么db 将不插入任何字符。...', -1)  // 得到22 14) perl中的散列赋值都是引用拷贝而非值拷贝 15) perl打印shell脚本的结果信息之前需要先chomp结果,否则打印出来的信息不对 16)  取出url的后缀

    1.4K00

    【php学习笔记】文件系统---制作备忘录和修改配置文件

    我们上节课试了r模式,只道是读取的时候使用,接下来我们用fwrite加上fopen中的w,写入模式来进行文件写入。...> 实验时可以把r后面的+号去掉。 我们通过实验,确实发现使用r模式,在文件存的时候可以进行写入数据,只用r的话,写入是不成功的。...r模式,只道是读取的时候使用,接下来我们用fwrite加上fopen中的w,写入模式来进行文件写入。...> 实验时可以把r后面的+号去掉。 我们通过实验,确实发现使用r模式,在文件存的时候可以进行写入数据,只用r的话,写入是不成功的。 a模式和w模式的不同 同样是下面的这段代码,我们改为a模式。 结论:你可以执行看看是不是返回了文件的目录部份。 parse_url mixed parse_url ( string $路径 ) 功能:将网址拆解成各个部份 <?

    1.2K30

    Python小白使用爬虫提取豆瓣电视剧数据

    jsonp1,这个jsonp1中间包括的才是一个字典,而外面这个jsonp1并不是我们所需要的数据 数据带有jsonp1 无论在爬其他网站的时候还是爬豆瓣的时候,如果发现返回的数据包含这个jsonp1、...(url): print("*"*100) r = requests.get(url,headers=headers,timeout=5) #可能会超时报错 assert r.status_code...== 200 #可能会请求不成功报错 return r.content.decode() def parse_url(url): try: html = _parse_url...@retry(stop_max_attempt_number=3) def _parse_url(url): print("*"*100) r = requests.get(url,headers...单个ip单个用户在短时间内请求网站数据过快,都会被豆瓣的反爬虫机制发现并判断为机器操作而封禁,解决的方法有几种 1.使用ip代理池,隔一段时间随机换一个ip 2.降低爬取速度,设置爬虫间隔时间 3.将爬取内容分块

    2.3K110

    接口监控可视化系统

    前言 在之前公司做过一个项目叫监控app首页接口及其下的二级接口的状态码和接口响应时间....当时的做法是写一个爬虫脚本,请求首页接口成功后返回结果递归解析并且再请求二级接口,大概能请求200多个接口,会记录错误状态码和失败原因,最终存在数据库中....执行策略是运行在linux下做定时运行脚本,当错误数量满足一定条件时发邮件报警....下面这段代码是一段递归函数,通过指定规则递归解析, 把获取的url加入到数组中. def parse_url(obj): """ 遍历解析json的每个url元素, 将url的加入到list中"...状态码 请求耗时 请求结果 请求结果和业务有很大关系,在监控中需要验证每个接口的返回值需要大量的接口文档.

    57820

    Python从0到100(三十):requests模块的其他方法

    1 requests中cookirJar的处理方法使用request获取的resposne对象,具有cookies属性,能够获取对方服务器设置在本地的cookie,但是如何使用这些cookie呢?...的任何细节,如果有需要,我们可以使用上述方法来解决2 requests处理证书错误经常我们在网上冲浪时,经常能够看到下面的提示:ssl的证书不安全导致2.1 代码中发起请求的效果那么如果在代码中请求会怎么样呢....disable_warnings() # 不显示安全提示 response = requests.get(url,verify=False)3 超时参数的使用在平时网上冲浪的过程中,我们经常会遇到网络波动...3.1 超时参数使用方法如下:response = requests.get(url,timeout=3)通过添加timeout参数,能够保证在3秒钟内返回响应,否则会报错3.2 注意这个方法还能够拿来检测代理...,才会报错@retry(stop_max_attempt_number=3) def _parse_url(url) #超时的时候回报错并重试 response = requests.get

    9010

    Hive的基本知识(三)Hive中的函数大全

    解析函数:parse_url json解析函数:get_json_object 空格字符串函数:space 重复字符串函数:repeat 首字符ascii函数:ascii 左补足函数:lpad 右补足函数...•assert_true: 如果’condition’不为真,则引发异常,否则返回null常见的分组排序函数 row_number:在每个分组中,为每行分配一个从1开始的唯一序列号,递增,不考虑重复;...rank: 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,挤占后续位置; dense_rank: 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,不挤占后续位置; 聚合函数 max(...explode函数的使用 在Select的时候,explode的旁边不支持其他字段的同时出现,Hive专门提供了语法lateral View侧视 图,专门用于搭配explode这样的UDTF函数 lateral...view侧视图 Lateral View是一种特殊的语法,主要用于搭配UDTF类型功能的函数一起使用,用于解决UDTF函数的 一些查询限制的问题。

    1.4K20

    Hive的基本知识(三)Hive中的函数大全

    解析函数:parse_url json解析函数:get_json_object 空格字符串函数:space 重复字符串函数:repeat 首字符ascii函数:ascii 左补足函数:lpad 右补足函数...•assert_true: 如果’condition’不为真,则引发异常,否则返回null常见的分组排序函数 row_number:在每个分组中,为每行分配一个从1开始的唯一序列号,递增,不考虑重复;...rank: 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,挤占后续位置; dense_rank: 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,不挤占后续位置; 聚合函数 max(...explode函数的使用 在Select的时候,explode的旁边不支持其他字段的同时出现,Hive专门提供了语法lateral View侧视 图,专门用于搭配explode这样的UDTF函数 lateral...view侧视图 Lateral View是一种特殊的语法,主要用于搭配UDTF类型功能的函数一起使用,用于解决UDTF函数的 一些查询限制的问题。

    2.6K20

    超详细SQL注入漏洞总结

    : 数字型判断: 当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:select * from where id = x 这种类型可以使用经典的 and 1=1 和...='1 和 and '1'='2来判断: Url 地址中输入 http://xxx/abc.php?...联合查询注入 POST型注入和Cookie注入需要插件和工具才可进行,以后在介绍,联合查询注入也是用的非常多的,可以在URL中提交SQL语句,也可以在表单提交,联合查询相当于把别的表的数据查询结果显示到当前表...information,和mysql,而所有的数据库信息全部存储在information中,MySQL的用户名和密码存储在mysql中的user表中,所以我们可以使用information来查询到所有的数据...table_schema=database() limit 1,1)>5# 第三个,第四个以此类推,当第N个数据表长度大于0返回为假时,说明这个数据表不存在; 然后猜解当前数据库的第一个数据表的第一个字符的

    5K41

    BUU-N1BOOK-第二章

    empty($url)){ safe_request_url($url); } 这段代码相当于main()函数,通过GET传参方式传入url赋值给$url,检测url是否为空,不为空则执行...} } safe_request_url函数在一开始就有个通过check_inner_ip($url)进行校验的判断,又调用了新的函数,再去看看 function check_inner_ip...url=http://a:@127.0.0.1:80@baidu.com/flag.php 其中flag.php是在界面给的提示 这个payload的作用就是,让检测到的url和curl请求的url不一致...,我们就白嫖BUU的服务器了 2.使用ssh命令连接 image.png 终端上输入: ssh -p 28044 root@node4.buuoj.cn 密码是:123456 (这道题没做出来的先做了,.../ping.php下使用POST请求: image.png image.png 由于docker是没有bash或python程序的,并且sh反弹是不行的。

    97700

    PHP中使用DOMDocument来处理HTML、XML文档

    不过我估计大部分人在爬取网页时还是会喜欢用正则去解析网页内容,学了今天的这个类下回就可以尝试下使用这个PHP自带的方式来进行解析分析了。...// ) // 利用 parse_url 分析链接 foreach($allImageLinks as $link){ print_r(parse_url($link)); } // Array...=> http://s1.bdstatic.com/r/www/cache/static/global/img/gs_237f015b.gif // ) // 利用 parse_url 分析链接 foreach...($allImageLinks as $link){ print_r(parse_url($link)); } // Array // ( // [host] => www.baidu.com...相比正则来说,是不是方便很多,而且代码本身就是自解释的,不用考虑正则的匹配失效的问题。配合另外一个PHP中自带的 parse_url() 方法也能非常方便地对链接进行分析,提取自己想要的内容。

    3.3K10
    领券