极客大挑战学web(一)
前言
没错,喜欢混子的我来水博客了,前几天想水一篇整徽章的结果给忘了,害!!!
正文
话不多说,直接上做题记录
EZwww
打开题目
发现了一只萌妹纸,好吧,言归正传,翻译了一下提示的,发现是我可以用post
方式得到我想要的,然后我就post了好多东西没post出来个小老鼠,就拿出御剑扫了一下,发现了
那就直接打开下载zip文件,打开发现了一个flag文本文档
不用想,肯定是假的,直接放弃这个,打开了一个index.php
的文件,发现了源码部分
<html>
<head>
<title>Lola's website1.0</title>
</head>
<body>
<?php echo '<h1>welcome to my website</h1>'; ?>
<?php echo '<p>i will never forget to backup my website......</p>'; ?>
<?php echo '<img src="img/lola.gif" alt="welcome~"/>'; ?>
</body>
</html>
<?php
$key1 = $_POST['a'];
$key2 = base64_decode('c3ljbDB2ZXI=');
if($key1 === $key2)
{
//this is a true flag
echo '<p>SYC{xxxxxxxxxxxxxxxxxx}</p>';
}
?>
所以就base64解码$key2 = base64_decode('c3ljbDB2ZXI=');
得到
然后就post
ctf.show_web5
打开题目,发现代码时PHP代码审计。
<?php
$flag="";
$v1=$_GET['v1'];
$v2=$_GET['v2'];
if(isset($v1) && isset($v2)){
if(!ctype_alpha($v1)){
die("v1 error");
}
if(!is_numeric($v2)){
die("v2 error");
}
if(md5($v1)==md5($v2)){
echo $flag;
}
}else{
echo "where is flag?";
}
?>
然后先观察,发现代码表达的意思是字符串v1
和v2
要一个是纯字符的字符串
,一个是纯数字的字符串
,然后两者的MD5
加密过后的值还要相等。
这在常理来看是不可能的。
但是仔细观察两者的比较形式,发现两者的判断相等是用==
进行判断的,那么就给了我可操作的空间了。
因为在判断时字符串默认转化为数字进行比较。所以就可以令两者的MD5加密后的字符串进行数字转化后的值相等。所以最终payload为http://618ddab3-7d92-4d09-ab8a-91affc090305.chall.ctf.show/?v1=QNKCDZO&v2=240610708
,别问我怎么得到这两个数的,问就是现成的。最后推荐一位大佬的博客。
ctfshow web6
这个题目打开提示
所以猜测是sql注入,判断注入点,然后存在一个空格过滤,用/**/
代替。然后别的就和一般的联合查询注入一样。得到flag
尾声
算了,博客就水这样吧,太菜了