靶场的一次详细分析

自己在做白帽江湖的靶机时,是发现不是你懂原理就行而是要讲究实战,任何诸多技术都要依靠的经验来实现的,像我自己懂的布尔盲注和时间盲注以及编码绕过等绕过技巧但是从未实战过但一做靶机就发现异常了先打开做基础的sql

58ee368d-c0e2-4152-ad53-f3cac625e92b.jpg

也是就是这个

762fce9c-f3de-440c-83bf-fd4e4280bce6.jpg

到了页面了以后我们首先观察url是否有id = 1 cat = xxx等这张一般是数字类型的,可以看到没有(此处我思考了很久因为我之前做的都是在url里面的),我突然想到打开F12的开发者打开网络点击一下可以看到

33fb0d62-0469-4c7b-9b21-4dd37a9d3385.jpg
也是找到注入点如果不确定课一复制fetch在控制台执行,你问我为什么不适用编辑(问就是使用的时候弹不出来容易红温,试过了)将后面改成and sleep(5)这个是为了判断哪个数据库是不是mysql数据库,如果点击网络发现200k这个东西你点开后有一段时间显示的说明是MySQL反之测试pg_sleep这个是另一个PostgreSQL的,但是MySQL一般使用最多的,SQL Server是WAITFOR函数,Oracle是 PL/SQL lock timer,sql serve我记得好像是(00:00:05)这个格式不管了下一步
然后打开burp其实上面的控制台方法也可以我习惯使用这个了,使用updatexml函数进行报错,我们需要先知道数据库然后是表然后是column(不知道叫什么所以用在里面的函数指代)?id=5 and updatexml(1,concat(0x7e,database(),0x7e),1)代码如上选择这个函数使用是第一个是名称第二个是路径第三个是新值,反正正常来讲实战大部分用不上不必过于深究0x7e是的16进制的实现百分百是不合格的字符实现报错,concat第二个填你要查询的东西,database(是查询数据库)记得进行编码操作以防报错?id=5%20and%20updatexml%281,concat%280x7e,database%28%29,0x7e%29,1%29,
所以数据库就能的是这道题里是
vuln_db查询当前数据库下的所有表,group_concat(table_name)from information_schema.tables where table_schema=database()),告诉你们一个小技巧准确来说是我总结的这个 from 后面的,你可以代指,理解为 information 那里的可以,就是说你可以,如果你用的是 Windows 系统的话,你可以理解为它是 c 盘或 d 盘这种最高级的这种目录。如果你用的是 Linux 的系统的话,你可以把理解为它是/的这个根目录,而后面就是你要到达的目的地。而where指的就是中间的路径过程,这个时候你就知道所有表名了,报错里会列出所有表,这道题里是secret_flags,articles~,其中secret_flags就是存 flag 的表,知道表里的列名,不然你不知道 flag 存在哪个字段里,?id=5 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='secret_flags'),0x7e),1)还是编码但是我就不写了,可以找AI或专门的工具。可能有人会问为什么前面查表要database后面查字段不需要因为查表名
加 database() → 为了 “精准定位”,只查当前库的表;
查字段不加 database() → 因为table_name在所有库中是唯一的(或者说,我们只需要这张表的字段,不管它在哪个库)。
真实环境建议加上因为是因为靶场一般只有一张才不加的,报错里会列出字段名,这道题里是id,flag_name,flag_value,其中flag_value就是存 flag 的字段。

image.png

最后解的此题flag为flag{err0r_b4s3d_ez_m0de}

温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。

涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。

如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。