日常

今天听了🐟师傅讲了一下午课,虽然大部分东西都听不太懂,但是在讲到数据库的时候还是学到了很多东西

首先我们在sql注入查询数据的基础就是在后端数据库进行查询,我们常见的手工注入语法像select * from <xxx> where <xxxx>

这里面的*就是用于替代所要查询的所有列表,当然也可以具体到要查询的表名(在爆出库名之后)

image-20220517192237938

看到右上角的current IP 可以判断出是smart/ ssti(当然题目也提示了是这个),这类题需要在XFF处构造payload

简单来说smart是php的模板引擎,模板引擎的作用就是分离前端页面和数据的,题目中显示API的URL由于环境的原因无法使用,但我们的IP依旧显示在了页面的右上角,且根据它的提示XFF我们很容易想到,在X-Forwarded-For里构造ssti:payload。

Smarty支持使用{php}{/php}标签来执行被包裹其中的php指令,那么我们可以使用{php}{/php}标签来构造payload,但是本题会报错(因为现在很多版本已经不支持这个语法了)

但是Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}. 也可以使用{else} 和 {elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||,or,&&,and,is_array(), 等等

可以直接在两个闭合的{if}{/if}里面加代码,如下:

{if phpinfo()}{/if}

那我们在XFF头里面用if标签加上{if system(‘cat /flag’)}{/if}就能实现查询

思路来自这篇博客smart

贴一些常见payload:

{if phpinfo()}{/if}
{if system('ls')}{/if}
{ readfile('/flag') }
{if show_source('/flag')}{/if}
{if system('cat ../../../flag')}{/if}

发表评论

蜀ICP备2022010829号