EIS2017-几道简单的WEB题的writeup

文章目录

    • PHP代码审计(70Pts)
    • 快速计算(78Pts)
    • php trick(82Pts)
    • 随机数(108Pts)
    • 不是管理员也能login(103Pts)
    • PHP是最好的语言(125Pts)

PHP代码审计(70Pts)


先看下源代码

   
error_reporting(0); 
include "flag1.php"; 
highlight_file(__file__); 
if(isset($_GET['args'])){ 
    $args = $_GET['args']; 
    if(!preg_match("/^\w+$/",$args)){ 
        die("args error!"); 
    } 
    eval("var_dump($$args);"); 
} 

审计得到通过get方式传递args变量,才能执行if里面的代码,下个if的正则表达式的意思是匹配任意 [A-Za-z0-9_] 的字符,就是任意大小写字母和0到9以及下划线组成,所以我们就测试php的全局变量,将其变量名传入,经测试,传入GLOBALS,可以得到flag值。

EIS2017-几道简单的WEB题的writeup_第1张图片

EIS{GE7_fl4g_w17h_GL0B4L}

快速计算(78Pts)


看一下题目

EIS2017-几道简单的WEB题的writeup_第2张图片

直接附上脚本

EIS2017-几道简单的WEB题的writeup_第3张图片

EIS{sdf4we5554}

php trick(82Pts)


查看源代码

EIS2017-几道简单的WEB题的writeup_第4张图片

审计一下发现是变量覆盖

EIS2017-几道简单的WEB题的writeup_第5张图片

对flag进行凯撒解密

EIS{jbfuvsynt}

随机数(108Pts)


多次刷新发现,数字范围是1000以内,写个1-1000的字典,然后放到burp中intruder。

EIS2017-几道简单的WEB题的writeup_第6张图片

EIS{brute_forc3_th3_r4nd0m_s33d}

不是管理员也能login(103Pts)


原题目中说明了题目会有提示,那我们先找找。
一个是在网站的说明与帮助中

EIS2017-几道简单的WEB题的writeup_第7张图片

好的,他告诉了我们网站的用户名,md5后的test必须为零,这个很简单,让我们想到了php弱类型,比如QNKCDZO等。

然后,在源代码中发现了第二个hint

EIS2017-几道简单的WEB题的writeup_第8张图片

看到unserialize我们知道是php反序列化

附上脚本

EIS2017-几道简单的WEB题的writeup_第9张图片

然后放服务器运行一下

EIS2017-几道简单的WEB题的writeup_第10张图片

得到反序列化后的password a:2:{s:4:"name";b:1;s:3:"pwd";b:1;}

登陆拿到flag

EIS{Smi1E_on_YouR_face_And_in_y0ur_heart}

PHP是最好的语言(125Pts)


这道题真的很折磨人。

在对原网站进行各种扫描截断无果后,在队友的努力下找到.bak源码泄露,访问index.php.bak得到源码,而后对其审计。

EIS2017-几道简单的WEB题的writeup_第11张图片

又看到了unserialize,好的,又是反序列化。

继续往下看,要求foo值里面要有一个param1,它要比2017大而且不能是纯数字,赋值为2018a即可,这里用到了PHP弱类型的一个特性,当一个整形和一个其他类型行比较的时候,会先把其他类型intval再比。

第二个是param2,要求其是一个长度为5的数组且第一个值也为数组,而且还有存在“nudt”,利用第一个"nudt"字符串与0弱类型比较相等,就可以绕过:“param2”:[[1],2,3,4,0]

然后我们对其反序列化,附上脚本。

EIS2017-几道简单的WEB题的writeup_第12张图片

运行一下得到foo的值a:2:{s:6:"param1";s:5:"2018a";s:6:"param2";a:5:{i:0;a:1:{i:0;i:1;}i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:0;}}

13

然后继续往下看,要求egg参数的egg[0]=MyAns,由于eregi需要截断所以要用%00截断,所以egg[0]=%00MyAns。

最后,egg[1]与fish相比不相等就行

附上最后的payload。

http://202.112.26.124:8080/95fe19724cc6084f08366340c848b791/index.php?foo=a:2:{s:6:"param1";s:5:"2018a";s:6:"param2";a:5:{i:0;a:1:{i:0;i:1;}i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:0;}}&egg[0]=%00MyAns&egg[1][]=1111&fish=1

EIS{php_th3_b45t_l4ngu4g3}


OK.

你可能感兴趣的:(CTF,Web)