标签:shtml 回显 EasySearch text echo file POST BJDCTF2020
首先是题目只有一个登陆界面,
查看响应头也没有什么,尝试过sql,没有回显。
然后用扫描工具,扫出来一个index.php.swp。
打开发现是源码。
<?php ob_start(); function get_hash(){ $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-'; $random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times $content = uniqid().$random; return sha1($content); } header("Content-Type: text/html;charset=utf-8"); *** if(isset($_POST['username']) and $_POST['username'] != '' ) { $admin = '6d0bc1'; if ( $admin == substr(md5($_POST['password']),0,6)) { echo "<script>alert('[+] Welcome to manage system')</script>"; $file_shtml = "public/".get_hash().".shtml"; $shtml = fopen($file_shtml, "w") or die("Unable to open file!"); $text = ' *** *** <h1>Hello,'.$_POST['username'].'</h1> *** ***'; fwrite($shtml,$text); fclose($shtml); *** echo "[!] Header error ..."; } else { echo "<script>alert('[!] Failed')</script>"; }else { *** } *** ?>
进行代码审计以后发现只要
$admin == substr(md5($_POST['password']),0,6)
也就是密码只要是前六位的哈希值为6d0bc1就会创建一个shtml。
shtml是一个动态回显的,类似于python的flask。
大麦那边是Hello,$_POST['username']
说明可以用<!--#exec cmd=""-->来进行命令执行。(这个是shtml的问题)
然后在登陆时候把用户名弄成<!--#exec cmd="ls"-->去找。
最终payload
标签:shtml,回显,EasySearch,text,echo,file,POST,BJDCTF2020 来源: https://www.cnblogs.com/FPointzero/p/16417579.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。