今天有点时间就多写几篇解题思路吧,希望能够帮助到那些需要帮助的人,所有的wp都是以一题一篇的形式写出
主要是为了能够让读者更好的阅读以及查找,希望你们不要责怪哦!!共勉!!!
永远爱你们的————新宝宝
程序逻辑问题分值:20
- 来源: 实验吧
- 难度:中
- 参与人数:8729人
- Get Flag:2738人
- 答题人数:2840人
- 解题通过率:96%
绕过
解题链接: http://ctf5.shiyanbar.com/web/5/index.php
解题思路:这一题基本可以学到很多过于sql注入的语法,关于union select 的使用:
首先:需要查看一下源代码(QAQ傻傻的我一开始并没有想到还要这样,打开源代码就会发现:
打开链接:
突然有一种与代码审计有关的题目,我们一步一步来看~~~
第一个if语句的意思是我们传入一个user和pass,它就可以执行连接数据库的命令,否则打印连接失败;
第二段:$sql = "select pw from php where user='$user'";
意思是查php里面user字段里面的pw的字段值,这句话的意思是把上一个查询的值放入到query变量中,
如果查询的结果不存在,就输出一个错误,如果有的话就打印出Key。。。
我们一般是不会去这么查询,在这个查询里我们可以利用简单的sql注入绕过它查询的过程,
我们可以构造一个password查询结果,
然后和后面输入的密码相等,咱们就可以绕过它验证的过程。。。
咱们就利用sql里面的联合查询吧,UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
需要注意的是:使用post方式,pass是经过md5加密的。只需要构造row[pw]和pass加密后的的值相等就可以实现绕过,
其中pass加密后的值我们可以通过输入控制,从而达到不用验证数据库中的真实账号密码。
先使用md5加密:https://md5jiami.51240.com/
然后构造一下需要输入的用户名:a' and 1=0 union select "250cf8b51c773f3f8dc8b4be867a9a02" #
密码是:456 就会得到;
您可以考虑给博主来个小小的打赏以资鼓励,您的肯定将是我最大的动力。
作者:落花四月
关于作者:潜心于网络安全学习。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!