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都是这个原理