CG-CTF

  https://cgctf.nuptsast.com/challenges#Web

 

  续上~

  第三十一题:综合题2

  查看本CMS说明;

 

  分析:

    ①数据库表名为admin;字段名为username和userpass(这里直接告诉我们表名和字段名,猜测大概率存在SQL注入漏洞);

    ②下面列了一些文件名,如say.php、passencode.php等,用burp爬出了so.php等;

    ③在url处可以发现file可以直接读取文件;

  思路:先用file参数读取这些文件,以获取更多信息;

   分析:

    ①passencode.php文件里建立了一个加密函数,分析代码可知对输入的参数的每一个字符转成ASCII码后输出;

    ②about.php文件里暴露了后台目录:http://cms.nuptzj.cn/loginxlcteam;

    ③so.php里暴露了很多有用的信息:

  • 检查了HTTP头部的User-Agent参数,必须为Xlcteam Browser才可以通过检验,用burp修改HTTP头部即可简单绕过;
  • POST参数为'soid';此处可能存在SQL注入漏洞;
  • 包含了两个文件antiinject.php和antixss.php,先简单分析代码即可知是对SQL注入和XSS跨站脚本的一些字符做了过滤;
  • 可以看到查询数据库的命令为:
    SELECT * FROM 'message' WHERE display=1 AND id=$id

    ④分析查询命令我们可以发现如果存在SQL注入漏洞,即为数字型注入漏洞,那么来仔细分析antiinject.php里的过滤规则,通过分析代码我们可以发现它对“select”、“union”、“and”、“from”等单词进行了黑名单过滤,对“+”、“=”、“空格”等字符也进行了黑名单过滤,而采用的过滤方法是用str_repalece()函数将黑名单替换掉,那么我们可以采用双写、大小写来绕过单词过滤,采用“/**/”注释绕过空格过滤,采用“like”或“>”、“<”来绕过“=”过滤,可以判断这里存在SQL注入漏洞;

  思路:已知数据库表名为admin,字段名为username和userpass,并已知过滤规则,这里我们采用exists()函数来直接爆破字段的内容,工具使用burp自带的intruder模块,payload为:

soid=1/**/anandd/**/exists(selselectect/**/*/**/frfromom/**/admadminin/**/where/**/oorrd(substr(usernanameme,§1§,1))>§1§)

  和

soid=1/**/anandd/**/exists(selselectect/**/*/**/frfromom/**/admadminin/**/where/**/oorrd(substr(userppassass,§1§,1))>§1§)

  得到username的字段内容为admin,userpass的字段内容为102 117 99 107 114 117 110 116 117,根据之前分析的passencode.php,可知解密后应为fuckruntu;

  用获得的账号密码登录后台;

  得知了木马文件的文件名,再用之前的file参数读取木马文件的内容;

  分析代码可知,这段代码的含义为用wtf参数里的内容替换到www里去执行,直接用Cknife连接;

  打开“恭喜你获得flag2.txt”文件;

  取得flag(干杯~);

 

  完结撒花~