系统安全实验 Week10

文章介绍了PHP代码审计过程中如何找到过滤条件,例如通过变量$shiyan的处理来获取flag。此外,讨论了本地文件包含漏洞(LFI)的利用,指出在test.php中利用filename而非file参数来访问/etc/passwd文件中的flag。最后,文章提到了无回显SQL注入的情况,通过万能密码实现登录,解释了这种密码的工作原理,即通过SQL语句的构造来绕过验证。
摘要由CSDN通过智能技术生成

 1.审计php源码,找到过滤条件

<?php
$flag='xxx'; 
extract($_GET);
 if(isset($shiyan))
 { 
    $content=trim(file_get_contents($flag));
    if($shiyan==$content)
    { 
        echo"flag:xxxxx";
    }
   else
   { 
    echo'Oh.no';
   } 
   }
?>

扔进chatGPT看看:

 

很明显要对shiyan变量做一些功夫:先试试直接令shiyan=flag

 

很明显失败了,那加一个&试试呢?

 

很明显成功了。最开始参考的思路:PHP代码审计系列(一)_php代码审计实例_tpaer的博客-CSDN博客 

http://1.9.180.3/?shiyan=&flag=1

后来发现令shiyan=&flag可以直接得到flag,为什么shiyan=flag不能得到答案呢?看看GPT怎么说

大致如此,变量名和变量指向的内容的区别吧

2.PHP本地文件包含漏洞(100分)

题目描述:

PHP文件包含漏洞分为本地文件包含漏洞(LFI)和远程文件包含漏洞(RFI),能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞。利用本地文件包含漏洞可以查看系统任意文件内容,如果具备一些条件,也可以执行命令。

当前网站根目录下的test.php文件存在本地文件包含漏洞。

提示:flag存在于/etc/passwd文件中,你需要通过使用PHP本地文件包含漏洞来找到flag

这题也挺离谱的,群里那个兄弟和我踩了一样的坑,对网页资源访问不太熟悉,一直试图用

IP/test.php查看源码,但是实操过后是不能访问的,就不必再死踩坑啦

参考了这位华为前辈的思路

 test.php后面原来还要跟file=xxx!!,于是立即行动

然而很不幸一片空白。课程群里大佬提点了一下file和filename的区别

那就试试filename吧! 

 

 成功辣!那是为什么呢?看看GPT君怎么说

还是要回到php源码呀,总算是蒙混过关了

 

3.万能密码登录_ytx(100分)

题目描述:

1、打开Firefox浏览器

2、输入靶机Ip

这个算是无回显的SQL注入,报错信息无法提供任何帮助。联想到题目所说的万能密码,就去搜了下:解决登录页面SQL注入问题_登录界面sql注入_不爱读书的小趴菜的博客-CSDN博客 

其实最开始我对万能密码的原理也不太清楚。。搜到一个万能密码填上去就完事了,如下图,输入万能密码,任意用户名都可以注入成功 

知其然,更要知其所以然,那就让我们看看GPT怎么说:

 数据库后台会这样:

SELECT * FROM users WHERE username = 'a' or 'a'='a' AND passwrod = 'xxx'

 要解决这个问题,主要将   进行转义,php的强制转义,java的PreparedStatement都是这个原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值