找到
35
篇与
xiaoeyv
相关的结果
- 第 5 页
-
【CTF】Day 1 重操旧业! [极客大挑战 2019]EasySQL 题目截图图片 进入后发现是账号登录的界面,尝试一些特殊字符串,如单引号,发现报错: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'admin'' at line 1 这说明存在注入点,我们输入账号为以下值,密码随意输入后,即可拿到 flag。 Payload test' or 1;# [极客大挑战 2019]Havefun 进去后是一只猫,点击后没什么反应,只能先审计源代码。在根目录发现如下代码: <!-- $cat=$_GET['cat']; echo $cat; if($cat=='dog'){ echo 'Syc{cat_cat_cat_cat}'; } -->Havefun截图图片 直接在 URL 内带参,即可得到 flag。 Payload /?cat=dog[HCTF 2018]WarmUp 进去后是个滑稽,老样子先审计代码,发现 HTML 注释内带着一个文件名:source.php,访问后发现输出代码: 源码截图图片 <?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (! isset($page) || !is_string($page)) { echo "you can't see it"; return false; } if (in_array($page, $whitelist)) { return true; } $_page = mb_substr( $page, 0, mb_strpos($page . '?', '?') ); if (in_array($_page, $whitelist)) { return true; } $_page = urldecode($page); $_page = mb_substr( $_page, 0, mb_strpos($_page . '?', '?') ); if (in_array($_page, $whitelist)) { return true; } echo "you can't see it"; return false; } } if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file']) ) { include $_REQUEST['file']; exit; } else { echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />"; } ?>代码审计 checkFile 函数 判断 page,如果为空或不为字符串,则返回 false。 检测 page 是否在白名单列表内,如果在,则返回 true。 新建 _page 变量,拼接 page 和问号,然后截取问号前的内容,再次判断是否在白名单。还会进行一次 urldecode 提高兼容性。 在白名单列表里还有 hint.php,访问后提示:flag not here, and flag in ffffllllaaaagggg,说明 flag 在一个名为 ffffllllaaaagggg 的文件内。 根据逻辑,可以传入白名单文件名并在后面加问号,这样 checkFile 通过校验,而后面的 include 则能拼接访问到真正的 flag。 Payload /?file=source.php?../../../../../ffffllllaaaagggg[ACTF2020 新生赛]Include 进入后只有个超链接 tips,点击后访问 ?file=flag.php,输出 Can you find out the flag?。 题目提示了是 include,于是尝试 index.php,发现输出重复,说明重复调用,需要加密输出。 尝试 php://input 被拦截,提示 hacker。于是使用 php://filter: ?file=php://filter/read=convert.base64-encode/resource=index.php解码后代码如下: <meta charset="utf8"> <?php error_reporting(0); $file = $_GET["file"]; if(stristr($file,"php://input") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){ exit('hacker!'); } if($file){ include($file); }else{ echo '<a href="?file=flag.php">tips</a>'; } ?>同理,读取 flag.php 即可获取 flag。 Payload /?file=php://filter/read=convert.base64-encode/resource=flag.php[ACTF2020 新生赛]Exec 进去后有一个输入框,可以进行 ping IP 操作,下面有回显。 exec截图1图片 题目提示 exec,推断是 ping IP,于是构造命令: exec截图2图片 127.0.0.1&&cd /&&ls看到回显中有 flag,直接查看: Payload 127.0.0.1&&cat /flag[GXYCTF2019]Ping Ping Ping 进入后提示 /?ip=,输入 ?ip=127.0.0.1,输出了 ping 结果。 在 IP 后加入 ls 成功执行,发现有 index.php 和 flag.php。 尝试 cat flag.php 提示不能有空格,于是用 $IFS 代替,结果发现不能使用 flag 关键字。于是想到用 base64 执行: ?ip=;a=Y2F0IGZsYWcucGhw;echo$IFS$a|base64$IFS-d|bash提示 bash 不能用,尝试了花括号、小括号、星号都不行,最后用反引号成功。 Payload /?ip=;a=Y2F0IGZsYWcucGhw;echo$IFS$a|base64$IFS-d[SUCTF 2019]EasySQL 进入后是一段话:Give me your flag, I will tell you if the flag is right. 下方有个输入框。 输入 flag 后提示 NONONO;输入双引号也提示 NONONO,推断有屏蔽词,比如 and、or、from。 输入数字时返回 Array ( [0] => 1 ),说明可以查表,但语句中不能出现屏蔽词。 查阅 WP,有两种方法: 利用 SQL 查询逻辑 数字输入有回显,字符串无回显,说明存在 OR 逻辑。SQL 语句大概是: select cmd || flag from flag当 cmd=*,1 时: select *,1 || flag from flag这样 1 短路第一个 flag,成功查询出 flag。 利用 sql\_mode sql_mode 控制 SQL 语法,PIPES_AS_CONCAT 会将 || 当作字符串连接符,而不是逻辑或。 Payload *,11;set sql_mode=PIPES_AS_CONCAT;select 1今天学到很多,睡觉睡觉。 -
记一次路由器和DNS互相DDoS 今天笔者用了家人的笔记本,由于访问学术网站困难,想把电脑的 DNS 改成家里内网自建的,但是担心家人带出去后使用无法上网,于是笔者就到路由器的后台,将路由器的上游 DNS 改成了自建。 过了一会儿,笔者发现笔记本上网变慢了,本来以为是偶发性情况,结果后面越来越慢,甚至上不了网,但是访问 IP 秒开,于是笔者怀疑是 DNS 出了问题,开始着手诊断,如图: DNS 查询超时图片 好家伙,基本所有的 DNS 查询都超时了。之后,笔者尝试内网、城域网、腾讯云 DNS,都与上图一致。 刚开始笔者以为是电脑的网卡不行了,可是后来一想,貌似是改完路由器上游 DNS 后才开始出现的问题。由于路由器没有 DNS 日志,于是笔者查看了内网 DNS 日志,如图: 内网 DNS 日志 1图片 内网 DNS 日志 2图片 不看不知道,一看吓一跳,这路由器是要造反,竟然对我的自建 DNS 发起了 DDoS 攻击!就当我以为这是路由器的漏洞时,我发现了亮点: 路由器查询上游图片 查询的上游竟然是路由器!由于笔者设置的 DNS 是 119.29.29.29,按道理不应该走路由器 DNS 查询。如果上游是路由器,那么由于路由器的上游是自建 DNS,那么就会导致一个死循环,无法查询到真正的解析,这也是这场 DDoS 最好的解释。 于是,笔者在仔细翻看 AdGuardHome 的设置界面时,发现了下面的选项: AdGuardHome 设置图片 原来如此!如果在这里不设置 Private rDNS,就默认为路由器 DNS,导致回环。随便填入一个可用的 DNS,这场 DDoS 也就结束了。 -
WordPress优化方法大全 前言 WordPress 是很流行的博客程序,很多站长使用它构建自己的站点。然而,如果不进行优化,WordPress 的打开速度和并发能力会很差。本文汇总了常见的 WordPress 优化方法。下图是优化后的站点测速图(使用了 CLOUDFLARE): 优化后站点测速图图片 教程 PHP 设置你的 PHP 版本为 8.3。经测试,WordPress 运行在 PHP 8.3 性能最好。1 安装 PHP 扩展 opcache。 WordPress 安装插件 WP Super Cache。这个插件大多数站点都在使用,而且效果确实不错。 安装插件 Redis Object Cache。这个插件需要你的服务器安装 Redis 后才可以使用。 安装插件 Nginx Helper。这个插件需要配合 Nginx 的模块一起使用,详细教程在后文。 安装插件 WPJAM BASIC。这个插件可以屏蔽所有 WordPress 不常用的功能。 Nginx 使用模块 ngx_cache_purge。 如果你是宝塔用户,那么恭喜你,宝塔在安装 Nginx 时安装了该模块。具体可以通过以下命令查看安装情况: nginx -V 2>&1 | grep -o ngx_cache_purge ```` 如果正常输出了 `ngx_cache_purge`,说明你的 Nginx 已经安装了该模块。 接下来,我们需要创建缓存文件夹: 将 paolu_host 替换为你的域名 mkdir -p /tmp/nginx-cache/paolu_host chmod 755 /tmp/nginx-cache/paolu_host 如果你有多个域名,同上 创建缓存文件夹后,在 Nginx 配置文件的 `server` 块前加入以下代码: 将 paolu_host 和 paolu.host 改为你的域名 levels 不需要改动,它指定该缓存空间有两层 hash 目录 keys_zone 来给缓存空间命名,一般使用域名,冒号后指定缓存空间的大小 inactive 是缓存时间 max_size 定义缓存空间的最大值 fastcgi_cache_path /tmp/nginx-cache/paolu_host levels=1:2 keys_zone=paolu.host:100m inactive=1d max_size=5G; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; 宝塔用户可以参考下图配置:  接下来,在网站的配置文件处添加如下配置: > 注意: > > * sock 路径需要修改,如果填错会导致网站 502。 > * 缓存清理配置中,请将 `1.1.1.1` 修改为你的服务器 IP。 post 访问不缓存 if ($request_method = POST) { set $skip_cache 1; } 动态查询不缓存 if ($query_string != "") { set $skip_cache 1; } 后台等特定页面不缓存 if ($request_uri ~ "/wp-admin/|/xmlrpc.php|wp-..php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } 登录用户、评论过的用户不展示缓存 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } 这里请参考你网站之前的配置,特别是 sock 的路径,弄错了就 502 了! location ~ 2.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi-83.sock; fastcgi_index index.php; include fastcgi.conf; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; # 新增的缓存规则 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-Cache "$upstream_cache_status From $host"; fastcgi_cache paolu.host; add_header Cache-Control max-age=0; add_header Nginx-Cache "$upstream_cache_status"; add_header Last-Modified $date_gmt; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; etag on; fastcgi_cache_valid 200 301 302 1d;} 缓存清理配置 location ~ /purge(/.*) { allow 127.0.0.1; allow "1.1.1.1"; # 引号要保留 deny all; fastcgi_cache_purge paolu.host "$scheme$request_method$host$1"; } 宝塔用户可以参考下图配置:  配置完成后,访问你的网站。如果响应头有 `Nginx-Cache: HIT`,说明配置成功,如下图:  如果你需要清理缓存,请使用上文中安装的插件 `Nginx Helper`。 ## 总结 如果配合 CDN 的缓存功能,可能会更快,但作者还没分析到那么深入,过两天再发一篇文章吧。 --- [^1]: [WordPress 在 PHP 8 各版本中的性能测试 - 站长帮](https://zhanzhangb.cn/blog/wordpress-php8-performance.html) 1 ↩ / ↩ -
vivo使用ATools更换第三方字体 准备工作 下载 ATools.apk 下载 vivo 文档 12.2.3.apk 卸载 原子文档 如果你是 iQOO 用户,请卸载 WPS 准备需要更换的字体(ttf 格式) 设置权限 长按 ATools → 应用信息 → 权限 → 所有权限 → 管理所有文件(一般在底部) → 允许。 具体步骤 进入 APP。点击 目标主题页面 → 主题页面2,跳转到 i 主题页面后 下载。 下载完成后,返回 ATools,点击 打开字体包文,会跳转到下图的页面: title="2d00e115617acfce688357671abf1b9e.jpeg"图片 首先点击右上角的编辑,然后找到框内的文字(每个人情况会不同)。在 fonts/ 后输入一个空格,不要保存,返回 i主题,删除 我是一个假黑体。 再次返回 ATools,点击 目标主题页面 → 主题页面2,跳转到 i 主题页面,此时 不要下载。返回 vivo文档 的编辑界面,这时 点击保存。保存成功后,返回 i主题,下载 我是一个假黑体。 注意:不要点到 “√”,需要点击 保存。 返回 ATools,点击 引入字体文件,选择之前准备的字体。点击后会让你选择秘钥,选择 我是一个假黑体.itz 即可。 点击 打开字体文件,进入如下图所示的界面: title="61d5816ef3075b7fce14484df7144049.jpeg"图片 找到 $hmtx(每个人可能不同),在它的后面输入一个空格,然后保存。 返回 i主题,应用字体。 常见问题 点击打开主题包文闪退 此问题为 iQOO 用户出现,目前解决方法是卸载 WPS 和原子文档。 提示“无可用的秘钥主题” 大概率是因为你在第 3 步时保存得过早/过晚或未保存。 点击「打开主题包文」闪退 请授予 ATools 权限,详见前文 设置权限。 提示“文件尚未全部加载完成,请稍后” 请卸载 原子文档,使用 vivo文档。 如何更换第三方主题/息屏 目前尚未研究出来。 无法安装应用:冲突/版本太高 打开 设置 → 应用 → 应用管理,找到对应应用并卸载。 注意:此方法不适用于 i 主题。 打开软件闪退或功能无法正常使用 先尝试重启应用;若多次无效,可能是软件在维护或已有新版本。 致谢 ATools 软件开发者:dump 技术支持:OriginOS 交流 2 群的小伙伴们