BUUCTF - [SUCTF 2019]EasySQL1

猜测后端执行语句

测试环境:BUUCTF - [SUCTF 2019]EasySQL1

通过测试发现,输入数字的时候,页面回显
BUUCTF - [SUCTF 2019]EasySQL1_第1张图片

输入字母页面就没有回显
BUUCTF - [SUCTF 2019]EasySQL1_第2张图片

而尝试执行注入语句的时候,会显示一个nonono
BUUCTF - [SUCTF 2019]EasySQL1_第3张图片

也就是说,没有回显,联合查询基本没戏。
好在页面会进行相应的变化,证明注入漏洞肯定是有的。而且注入点就是这个POST参数框框,就是那个inject参数。
至少我们可以把精力全部放在这个参数上。

既然同时他也没有报错信息,那报错注入也不用太考虑了。试下布尔盲住,结果发现不管怎么样都是返回nonono,就连数据库长度大于1这种探针都返回nonono,那基本可以放弃布尔盲注了。

1' and length(database())>=1#

BUUCTF - [SUCTF 2019]EasySQL1_第4张图片

时间盲注也试过了,也是不行。

想到他可能是过滤了太多的关键词,试一下堆叠查询,这个可使用的语句比较多。
最后真的就发现这两个payload是可以执行的。

show databases;
show tables;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FmhluFtY-1587897587111)(_v_images/20200426180727365_1982949015.png)]

BUUCTF - [SUCTF 2019]EasySQL1_第5张图片

我知道肯定不能看Flag里的字段,但是还是试试

1;show columns from Flag;#

BUUCTF - [SUCTF 2019]EasySQL1_第6张图片

到这就是我认知的极限了
然后去找大佬的wp

这真的完全不在我的认知范围内,看过这个我才知道,原来对后端的熟悉程度可以达到水平,我们居然可以去猜测后端代码!!!
我现在就在想,我离大佬的距离真的就能远到这种程度,我真的。

这个让我怎么总结?
我之前就是在命令执行那一块知道||这个东西,就是前边的条件如果是错的,就执行后边的命令。但是它出现在了sql中,和sql语句结合起来,我连看都看不懂了。
就,为啥select *,1||flag from Flag = select *,1 from Flag
但是这里为什么是select 1我可百度到了 网页链接

select任何一个常数都会在表中新建一列,然后查询出那一列的内容。select 1 from Flag的结果就是一排1,这一排有几个字段取决于原字段的多少。
等下,我还是解释不了为啥select *,1||flag from Flag就能出结果,唉。

你可能感兴趣的:(web安全,渗透基础,Bypass)