陕西省网络空间安全技术大赛WriteUp
1.签到(10分)
base64解密
2.签到(50分)
看一下源码~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>登录</title>
<meta name="description" content="slick Login">
<meta name="author" content="Webdesigntuts+">
</head>
<body>
<form>
<div align="center">
<p>Username: <input type="text" name="Username" id="Username" size="25" required/></p>
<p>Password: <input type="password" name="password" id="password" size="25" required/></p>
<p><input type="submit" class="small button" name="submit" id="submit" value="Submit"/><br/></p>
</form>
<!-- if (isset($_GET['Username']) && isset($_GET['password'])) {
$logined = true;
$Username = $_GET['Username'];
$password = $_GET['password'];
if (!ctype_alpha($Username)) {$logined = false;}
if (!is_numeric($password) ) {$logined = false;}
if (md5($Username) != md5($password)) {$logined = false;}
if ($logined){
echo "successful";
} else {
echo "login failed!";
}
}
-->
</body>
</html>
可以看出来这里的要求是:
(1)username是字母
(2)password是数字
(3)2者的md5的==判断为true
这里的关键在于松散比较,如果0e
开头的,又是用的 ==
,可以只判断前两位,之后的只要都是数字就可以。
纯数字md5:240610708
纯字母md5:QNKCDZO
可以写脚本跑,最好平时跑好收集起来。
<?php
for ($flag = 240000000; $flag <= 249999999; $flag++) {
if (md5($flag) == md5('QNKCDZO')){
echo $flag."/";
}
}
?>
submit,然后。。。。
源码源码~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>qiang</title>
</head>
<body>
<form>
<div align="center">
<h2>哈哈,以为这样就完了吗?!并没有,接着奋斗吧,少年!</h2>
</form>
<!-- if (isset($_POST['message'])) {
$message = json_decode($_POST['message']);
$key ="*********";
if ($message->key == $key) {
echo "flag";
}
else {
echo "fail";
}
}
else{
echo "~~~~";
}
-->
</body>
</html>
~~~~
百度了解一些json_decode,构造post。
原理呢如下
得到flag:flag{sffs_gsg_suhs}