今天听了🐟师傅讲了一下午课,虽然大部分东西都听不太懂,但是在讲到数据库的时候还是学到了很多东西
首先我们在sql注入查询数据的基础就是在后端数据库进行查询,我们常见的手工注入语法像select * from <xxx> where <xxxx>
这里面的*就是用于替代所要查询的所有列表,当然也可以具体到要查询的表名(在爆出库名之后)

看到右上角的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}