几秒钟后我傻眼了,该机器人返回了几个ip和浏览器ua信息,其中我的ip和手机型号赫然出现在我的眼前,难以置信,愣了半天后,心里立马冒出了好奇的想法,今天必须把这个原理搞明白,不然我会睡不着觉。...0x01 php获取ip 因为不是很会php,就到网上找了个找,发现需要用到如下几个函数:getenv('HTTP_CLIENT_IP')getenv('HTTP_X_FORWARDED_FOR')getenv...,我们还需要用到imagecreatefromjpeg()函数,他的作用是将php文件伪装成图片,构造代码如下: $im = imagecreatefromjpeg("1.jpg");//这样php返回的图片就会是同目录下的...长按发送按钮转成xml卡片消息 此时查看服务器,发现已经生成了记录hack.txt 文件内容为 可以看到获取到了三个ip,没有ua值的是腾讯服务器的ip,第一个是大号本机的ip...0x06 后记 讲真,在现在这个时代拿到ip并没有什么实际的用处,顶多能够吓吓小白或者在小白面前装装逼,但这里还是要说一句,我只是做一个分享,若因此文章产生了比较重大的问题(虽然不大可能),一切责任自负
image.png 如果你想查询某个变量或者函数在代码中的具体位置,你也可以使用全局定位搜索,该软件会快速地定位找出具体文件,这一功能大大加快了我们审计的速度。...返回重填"); } } return $str;//没有的返回值 } 我们来看一下"/user/check.php"函数是否存在可利用的地方,这个文件中有 5 处 SQL 语句查询,第一处,无法利用...1.2.2.3 网站重装漏洞 来看一下"/install/index.php"文件的代码流程,发现这里并没有检测"/install/install.lock"文件是否存在,那应该是在其他文件中。...Content-Length: 15 step=2 image.png 1.2.2.4 反射型 XSS 该漏洞出现在"/inc/top.php"文件中,需要用户登录方可利用。...> image.png 同样的漏洞还出现在"/uploadimg_form.php"文件66-67行处,这里不赘述。
()和strcasecmp(),前一个函数获取得系统的环境变量,如果能取到值,则返回该值,不能则返回false. ?..._SERVER['REMOTE_ADDR']同样可以获取到客户端的IP地址.二者的区别在于,getenv不支持IIS的isapi方式运行的php. strcasecmp(string1,string2)...字符串函数的用法是把string1和string2进行比较,如果相等返回0,如果string1大于string2,返回大于0的数,小于则返回小于0的数....== strpos($ip, ',')) $ip = reset(explode(',', $ip)); return $ip; } 一、没有使用代理服务器的PHP获取客户端IP情况:...["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值.
文章目录 一、以异步返回返回多个返回值 二、同步调用返回多个值的弊端 三、尝试在 sequence 中调用挂起函数返回多个返回值 四、协程中调用挂起函数返回集合 一、以异步返回返回多个返回值 ----...在 Kotlin 协程 Coroutine 中 , 使用 suspend 挂起函数 以异步的方式 返回单个返回值肯定可以实现 , 参考 【Kotlin 协程】协程的挂起和恢复 ① ( 协程的挂起和恢复概念...// 调用 " 返回 List 集合的函数 " , 并遍历返回值 listFunction().forEach { // 遍历打印集合中的内容...sequence 中调用挂起函数返回多个返回值 ---- 尝试使用 挂起函数 kotlinx.coroutines.delay 进行休眠 , 这样在挂起时 , 不影响主线程的其它操作 , 此时会报如下错误...---- 如果要 以异步方式 返回多个返回值 , 可以在协程中调用挂起函数返回集合 , 但是该方案只能一次性返回多个返回值 , 不能持续不断的 先后 返回 多个 返回值 ; 代码示例 : package
系统介绍 在幻想领域中, 图床图片全部托管在 新浪云, 每张图片都有多张不同级别的缩略图.这便是幻想领域的最大特色之一. 拥有较为完善的用户系统与管理员系统。...管理员在后台拥有完全权限,对网站的一切基本配置 我的图库,将会罗列出用户自己所上传的所有图片,管理员则显示系统托管的所有图片.你可以在这里对图片进行删除、预览或者复制它,但删除仅仅只是不再出现在本系统中...admin 但是讽刺的是,您需要在前台进行登录 环境条件 请注意,幻想领域自1.0版本起只支持PHP版本≥5.6<7.1,请注意更新您的PHP版本。 ...(getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR...第29行$smtp_port = 25修改成$smtp_port = 465或者另外的端口即可 4、验证码不显示 应该是你的伪静态没有设置成功,请参考前面的环境条件进行设置
PHP中环境变量的操作 在 PHP 中,我们可以通过 phpinfo() 查看到当前系统中的环境变量信息(Environment)。在代码中,我们也可以通过两个函数,查看和修改相应的环境变量信息。...不过需要注意的是,在 CLI 环境和 SAPI 环境下它所返回的信息是不一样的。...,则此函数将始终返回由 SAPI 设置的环境变量的值,即使已使用 putenv() 来设置同名的本地环境变量。..."), PHP_EOL; // GET echo getenv("REQUEST_METHOD", true), PHP_EOL; // 在第二个参数不为 true 的情况下,我们可以通过 getenv...所以,在 php.ini 中,默认情况下 putenv() 是定义为危险函数的,也就是在 disable_functions 中需要删除掉这个函数才能正常使用,如果要使用 Composer 的话也必须要开启这个函数才能正常使用
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误...如果没有开启gpc,对_GET、_POST、_COOKIES、_REQUEST使用deep_addslashes()函数过滤一遍,那么我们跟踪一下这个函数,在PHPSTORM中,选中函数使用Ctrl+B...可以看到就是调用addslashes() 函数去过滤传递过来的值。 addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。...发现其是getip的值,继续跟踪该函数: function getip() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP...user.php(存储型xss) 在do_add_news时,$content没有被htmlspecialchars过滤,只被filter_data过滤: ?
一、如果没有使用代理服务器 REMOTE_ADDR = 客户端IP HTTP_X_FORWARDED_FOR = 没数值或不显示 $ip = $_SERVER['REMOTE_ADDR']; 二...= 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215) 这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去访问的...四、使用欺骗性代理服务器 REMOTE_ADDR = 代理服务器 IP HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163...五、使用高匿名代理 REMOTE_ADDR = 代理服务器 IP HTTP_X_FORWARDED_FOR = 没数值或不显示 使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,...返回0,>0,<0。
getenv('HTTP_CLIENT_IP')也就是获取传递过去的CLIENT_IP的值,即在请求包中http头的client_ip字段对应的值,也就是这里导致了我们可以输入用户可控的数据。...= getenv('HTTP_CLIENT_IP');} 这里的意思就是当client_ip存在而且getenv('HTTP_CLIENT_IP')的返回值不为unknown时,就会直接把client_ip...这里经过多次尝试在burp中不改变请求包中的验证码的值多次提交过去,能够得到code:0的回显的,也就是这里这个验证码验证是可以被绕过的!直接提交一次之后不变就可以了。...注意:这里注入的时候使用的是 client-ip而不是client_ip,不要混淆了php中获取时使用的getenv('HTTP_CLIENT_IP') 这里才是用下划线,而请求包中应该使用横杆- (...0x03漏洞修复 因为这里的核心原因是没有对$fields['ip'] 这个变量做过滤,也没有检查它是否合法,所以这里简单的给出一个修复方案,在comment.php的79行后面添加两行代码,如图 ?
XFF注入攻击 XFF注入攻击的测试地址在本书第2章。...X-Forwarded-For简称XFF头,它代表客户端真实的IP地址,通过修改X-Forwarded-For的值可以伪造客户端IP地址,在请求头中将X-Forwarded-For设置为127.0.0.1...图4-67 将X-Forwarded-For设置为127.0.0.1',再次访问该URL,页面返回MySQL的报错信息,结果如图4-68所示。...图4-69 图4-70 通过页面的返回结果,可以判断出该地址存在SQL注入漏洞,接着使用order by判断表中的字段数量,最终测试出数据库中存在4个字段,尝试使用Union查询注入方法,语法是...XFF注入代码分析 PHP中的getenv()函数用于获取一个环境变量的值,类似于_SERVER或_ENV,返回环境变量对应的值,如果环境变量不存在,则返回FALSE。
函数在 apache下能正常获取ip地址,而在iis中没有作用,而$_SERVER['REMOTE_ADDR']函数,既可在apache中成功获取访客的ip地址,在iis下也同样有效 一、关于 REMOTE_ADDR...中, 而X-Real-IP,没有相关标准, 其值在不同的代理环境不固定 关于此的更多讨论可以参考:https://www.douban.com/group/topic/27482290/ 1....注意 : 例子说明打印一个转换后的地址使用 printf() 在PHP4和PHP5的功能: <?...2. ip2long() 将返回 FALSE 在IP是 255.255.255.255 的情况,版本为 PHP 5 <= 5.0.2....在修复后 PHP 5.0.3 会返回 -1 (与PHP4相同). 三.
$ad_id); 可以看出上面的是个数字型注入,getone函数我们也追踪一下,代码在mysql.class.php中 function getone($sql, $type=MYSQL_ASSOC){...poc 构造思路如下: 插入两条数据的思路,进行构造(注入返回结果要显示在留言内容处) ? ? ? 3....漏洞发生在user.php文件750行处 ? $_POST['pay']并没有做多余的安全检测,而是直接进行拼接,但是后面有index.php文件,所以我们的重点是如何截断。...7.发布文章处XSS 在user.php文件中的266行,有个对文章内容进行过滤 $content = !empty($_POST['content']) ?...用户注册处xss 在user.php文件中的763行处 //编辑个人资料 elseif($act == 'edit_user_info'){ $user_id = intval($_SESSION
php //获取客户端ip,但是如果使用了代理,则获取到的是代理之后的ip echo '1-'.getenv("REMOTE_ADDR").'...'; //客户端真实 IP ,但是如果没有使用代理就不返回真实ip echo '3-'.getenv("HTTP_X_FORWARDED_FOR").'...'; 0x02 1、如果客户端使用了透明代理,则getenv("REMOTE_ADDR")返回的是最后一个代理服务器 IP.getenv("HTTP_X_FORWARDED_FOR")返回的是客户端代理之前的...4、用户使用高匿名代理 getenv("REMOTE_ADDR") = 代理服务器 IP getenv("HTTP_X_FORWARDED_FOR") 返回空或unkown 由于getenv("HTTP_X_FORWARDED_FOR...0x03 若网站使用了cdn,则getenv("REMOTE_ADDR")返回的是提供cdn商的ip地址。则使用cdn商提供的方法进行获取。
最近在做一个微信H5支付的功能,开发中遇到了一些问题,网上相关的资料比较少,在此做下总结以供参考。 一、功能需求 手机浏览器页面发起产品购买请求,调起微信支付,支付完成后返回购买页面展示支付结果。...这里需要注意的是,想要调起微信支付,需要后端向微信发起统一下单,成功后返回结果有mweb_url字段,该字段的值是一个URL,为支付跳转链接。...'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown...$matches [0] : ''; } } 2、用户在微信中间页面操作后(支付或取消支付)会回跳到我们指定的回调地址,并带上我们拼装的参数。...三、总结 1、参照微信文档,文档中给出了详细的流程步骤。
##0x01直接上代码';//客户端真实 IP ,但是如果没有使用代理就不返回真实ipecho '3-'.getenv("HTTP_X_FORWARDED_FOR").'...';##0x021、如果客户端使用了透明代理,则getenv("REMOTE_ADDR")返回的是最后一个代理服务器 IP.getenv("HTTP_X_FORWARDED_FOR")返回的是客户端代理之前的...getenv("REMOTE_ADDR") = 代理服务器 IPgetenv("HTTP_X_FORWARDED_FOR") 返回空或unkown由于getenv("HTTP_X_FORWARDED_FOR...##0x03若网站使用了cdn,则getenv("REMOTE_ADDR")返回的是提供cdn商的ip地址。则使用cdn商提供的方法进行获取。
我是一个刨根问底的人,在我的不懈努力下发现,原来这是php ts 版本会出现的问题。 原因所在 这其实是php的一个已知问题(只是对于我来说是未知 :p) 问题仅仅出现在php ts版本中。...这对于Ajax请求来说是有问题的,或者仅仅是当用户在新标签中打开多个链接时。 下面我以laravel为例重现此问题。...接下来在学妹的电脑上(ts)演示,同样的操作细节,结果却返回空!...正常等待5s结果: 在第一次请求没有结束之前立刻再次请求的结果: ok,这就是为什么在学妹本地环境中访问我的接口,会报错的原因,就是因为他ts版本的php没有找到env对应的值。...1 他不是找不到值么,好的,我给他个默认值: 找到config / api.php文件,大约第60行 'prefix' => env('API_PREFIX', null) 更改为 'prefix' =
一、前言 前几天在Python钻石交流群有个叫【进击的python】的粉丝问了一个Python基础的问题,这里拿出来给大家分享下,一起学习下。...他的数据如下图所示: 有什么方法可以快速筛选出 pitch 中的值 在0.2 > x > -0.2 的值呢?...二、解决过程 这个问题肯定是要涉及到Pandas中取数的问题了,从一列数据中取出满足某一条件的数据,使用筛选功能。 他自己写了一个代码,如下所示: 虽然写的很长,起码功能是实现了的。...后来【LeeGene】大佬给了一个代码,如下所示: df = df[df.pitch>0.2] 看上去确实很简单,不过还没有太满足需求,后来【月神】补充了下,取绝对值再比较。...这篇文章主要分享了一个Pandas筛选的问题,文中针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。
在php中自带了一个非常的简单的获取IP地址的全局变量,很多初学都获取IP都使用它了,但是对于这些我们一般用法是满足了,但是对于要求高精度这个函数还是不行的。...但是如果客户端没有通过代理服务器来访问,那么用getenv(“HTTP_X_FORWARDED_FOR”) 取到的值将是空的。...”) 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv(“HTTP_X_FORWARDED_FOR”) 取到的真实IP值。...如果上面的else if(getenv(“HTTP_X_FORWARDED_FOR”))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv(“HTTP_X_FORWARDED_FOR...这种情况下已经确认客户端没有使用代理服务器,从而通过 else if(getenv(“REMOTE_ADDR”)) $ip = getenv(“REMOTE_ADDR”); 这两行语句获得客户端的
public function deep_in_array($value, $array) { foreach($array as $item) { ...
1.php获取客户端IP 在PHP获取客户端IP时,常使用 _SERVER[“REMOTE_ADDR”] 。...“,”分隔);而在“匿名代理”、“欺骗性代理”的情况下是代理服务器的IP值(如果是多层代理,该值可能由多个代理服务器的IP组成,由逗号“,”分隔);在“高匿名代理”的情况下是空值。...HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。...三个值区别如下: 一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况...$_SERVER[“SERVER_ADDR”],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。
领取专属 10元无门槛券
手把手带您无忧上云