网络安全实验室_脚本关writeup


先贴网址:网络安全实验室

1.key又又找不到了

打开题目发现一个超链接,习惯性burp抓包看看

 

key这不就来了么

 

2.快速口算:

既然是脚本关,人算不如机算,快滚去写代码,掏出py吧少年。

 1 import requests, re
 2 url = 'http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
 3 s = requests.session()
 4 c = s.get(url).content
 5 print(c)
 6 c=c.decode('utf-8')#python3一定要加上这一句
 7 r = re.findall(r'[\d]{2,}',c)
 8 r = int(r[0])*int(r[1])+int(r[2])*(int(r[3])+int(r[4]))
 9 c1 = s.post(url, data={'v':r}).content
10 print(c1.decode('utf-8'))

走你

 

3.这个题目是空的

试了一圈最后发现是null,还不能大写,因为我第一下猜的就是大写的。

 

4.怎么就是不弹出key呢?

 先点了链接发现没反应,审查元素后发现一大段js代码,发现a是个匿名函数,代码中还有禁止弹窗的函数,复制下来,删除前面几个函数,修改打印的值。

js代码并不是很了解,所以贴一下别人的wirteup......

 1 <script>
 2 var a = function () {
 3   var b = function (p, a, c, k, e, r) {
 4     e = function (c) {
 5       return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29)  : c.toString(36))
 6     };
 7     if (!''.replace(/^/, String)) {
 8       while (c--) r[e(c)] = k[c] || e(c);
 9       k = [
10         function (e) {
11           return r[e]
12         }
13       ];
14       e = function () {
15         return '\\w+'
16       };
17       c = 1
18     };
19     while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
20     return p
21   }('1s(1e(p,a,c,k,e,r){e=1e(c){1d(c<a?\'\':e(1p(c/a)))+((c=c%a)>1q?1f.1j(c+1k):c.1n(1o))};1g(!\'\'.1h(/^/,1f)){1i(c--)r[e(c)]=k[c]||e(c);k=[1e(e){1d r[e]}];e=1e(){1d\'\\\\w+\'};c=1};1i(c--)1g(k[c])p=p.1h(1l 1m(\'\\\\b\'+e(c)+\'\\\\b\',\'g\'),k[c]);1d p}(\'Y(R(p,a,c,k,e,r){e=R(c){S(c<a?\\\'\\\':e(18(c/a)))+((c=c%a)>17?T.16(c+15):c.12(13))};U(!\\\'\\\'.V(/^/,T)){W(c--)r[e(c)]=k[c]||e(c);k=[R(e){S r[e]}];e=R(){S\\\'\\\\\\\\w+\\\'};c=1};W(c--)U(k[c])p=p.V(Z 11(\\\'\\\\\\\\b\\\'+e(c)+\\\'\\\\\\\\b\\\',\\\'g\\\'),k[c]);S p}(\\\'G(B(p,a,c,k,e,r){e=B(c){A c.L(a)};E(!\\\\\\\'\\\\\\\'.C(/^/,F)){D(c--)r[e(c)]=k[c]||e(c);k=[B(e){A r[e]}];e=B(){A\\\\\\\'\\\\\\\\\\\\\\\\w+\\\\\\\'};c=1};D(c--)E(k[c])p=p.C(I J(\\\\\\\'\\\\\\\\\\\\\\\\b\\\\\\\'+e(c)+\\\\\\\'\\\\\\\\\\\\\\\\b\\\\\\\',\\\\\\\'g\\\\\\\'),k[c]);A p}(\\\\\\\'t(h(p,a,c,k,e,r){e=o;n(!\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\'.m(/^/,o)){l(c--)r[c]=k[c]||c;k=[h(e){f r[e]}];e=h(){f\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\w+\\\\\\\\\\\\\\\'};c=1};l(c--)n(k[c])p=p.m(q s(\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\b\\\\\\\\\\\\\\\'+e(c)+\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\b\\\\\\\\\\\\\\\',\\\\\\\\\\\\\\\'g\\\\\\\\\\\\\\\'),k[c]);f p}(\\\\\\\\\\\\\\\'1 3="6";1 4="7";1 5="";8(1 2=0;2<9;2++){5+=3+4}\\\\\\\\\\\\\\\',j,j,\\\\\\\\\\\\\\\'|u|i|b|c|d|v|x|y|j\\\\\\\\\\\\\\\'.z(\\\\\\\\\\\\\\\'|\\\\\\\\\\\\\\\'),0,{}))\\\\\\\',H,H,\\\\\\\'|||||||||||||||A||B||M||D|C|E|F||I||J|G|N|O||P|Q|K\\\\\\\'.K(\\\\\\\'|\\\\\\\'),0,{}))\\\',X,X,\\\'||||||||||||||||||||||||||||||||||||S|R|V|W|U|T|Y|13|Z|11|14|12|10|19|1a|1b|1c\\\'.14(\\\'|\\\'),0,{}))\',1t,1u,\'|||||||||||||||||||||||||||||||||||||||||||||||||||||1e|1d|1f|1g|1h|1i|1v|1s|1l||1m|1n|1o|1r|1k|1j|1q|1p|1w|1x|1y|1z\'.1r(\'|\'),0,{}))', 62, 98, '|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||return|function|String|if|replace|while|fromCharCode|29|new|RegExp|toString|36|parseInt|35|split|eval|62|75|53|var|slakfj|teslkjsdflk|for'.split('|'), 0, {
22   });
23   var d = eval(b);
24   alert('key is first 14 chars' + '\n'+d.substr(0,14));
25 }()
26 </script>

 

5.逗比验证码第一期

 

随手一试发现验证码可以反复提交,立即拿出burp爆破啊

密码到手,登录后即可见flag。

 

6.逗比验证码第二期

这题完全没思路,看了大佬的writeup,说是vcode参数为空就行了,这原理我并不太懂,有知道的老哥请赐教

同样输入密码即可见flag。

 

7.逗比验证码第三期


方法同上,提示好像并没有什么卵用

 

8.微笑一下就能过关

审查元素发现源代码的地址,我贴一下源码

 1 <?php  
 2     header("Content-type: text/html; charset=utf-8");
 3     if (isset($_GET['view-source'])) { 
 4         show_source(__FILE__); 
 5         exit(); 
 6     } 
 7 
 8     include('flag.php'); 
 9 
10     $smile = 1;  
11 
12    if (!isset ($_GET['^_^'])) $smile = 0;  
13     if (preg_match ('/\./', $_GET['^_^'])) $smile = 0;  
14     if (preg_match ('/%/', $_GET['^_^'])) $smile = 0;  
15     if (preg_match ('/[0-9]/', $_GET['^_^'])) $smile = 0;  
16     if (preg_match ('/http/', $_GET['^_^']) ) $smile = 0;  
17     if (preg_match ('/https/', $_GET['^_^']) ) $smile = 0;  
18     if (preg_match ('/ftp/', $_GET['^_^'])) $smile = 0;  
19     if (preg_match ('/telnet/', $_GET['^_^'])) $smile = 0;  
20     if (preg_match ('/_/', $_SERVER['QUERY_STRING'])) $smile = 0; 
21     if ($smile) { 
22         if (@file_exists ($_GET['^_^'])) $smile = 0;  
23     }  
24     if ($smile) { 
25         $smile = @file_get_contents ($_GET['^_^']);  
26         if ($smile === "(●'◡'●)") die($flag);  
27     }  
28 ?>

要求十分之苛刻,要求带有^_^参数,又不许键中含有'_'字符,^_^必须是本地不存在的文件,又要读取^_^的内容。

完全没思路,去看看别人的writeup吧。

既要对"^_^"赋值,又得想办法去掉"^_^"中的"_",那么可以采用Url编码变为"%5f".所以我们输入就应该为 "^%5f^".

代码把 http https ftp telnet 这些给过滤了,而又要求通过file_get_contents()取出$_GET['^_^']里的值.但,$_GET['^_^']又必须不存在.所以$_GET['^_^']只能是字符串"(●'◡'●)",不可能是文件名.那么file_get_contents()里的参数应该是啥呢.查了一下,发现data://完美符合.所以我们输入就应该为"^%5f^=data:,(●'◡'●)"

 

9.逗比的手机验证码


验证码输入后提交出现以下提示

回去将手机号码改一下按原验证码提交即可

 

10.基情燃烧的岁月

根据提示三位数密码 首位不为0,立马掏出burp爆破之

拿到密码  登录竟然得到发现........

气愤的开始爆前任的菊花

成功爆菊 拿到flag

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM